Configurer des options pour exécuter votre conteneur

Lorsque vous créez une instance ou un modèle d'instance à utiliser pour exécuter des conteneurs sur Compute Engine, spécifiez la configuration du conteneur à l'aide de la console Google Cloud Platform ou de l'outil de ligne de commande gcloud.

Avant de commencer

Spécifier un règlement en matière de redémarrage

Vous pouvez définir un règlement en matière de redémarrage pour indiquer si vous souhaitez redémarrer des conteneurs en cas de fermeture. Le règlement par défaut consiste à redémarrer systématiquement les conteneurs. Vous pouvez également définir un règlement permettant de redémarrer des conteneurs en cas d'échec, ou de ne jamais les redémarrer.

Console

  1. Accédez à la page "Instances de VM".

    Accéder à la page "Instances de VM"

  2. Cliquez sur le bouton Créer une instance pour créer une instance.
  3. Dans la section Conteneur, spécifiez le règlement en matière de redémarrage souhaité.

gcloud

Utilisez le paramètre --container-restart-policy pour spécifier un règlement en matière de redémarrage de conteneurs :

  • always (règlement par défaut)
  • on-failure
  • never

L'exemple suivant permet de lancer un conteneur avec un règlement en matière de redémarrage on-failure, ce qui signifie que le redémarrage ne se produit que lorsque le conteneur renvoie un code de sortie différent de zéro :

gcloud compute instances create-with-container busybox-vm \
    --container-image docker.io/busybox:1.27 \
    --container-restart-policy on-failure

Exécutez la commande gcloud compute instances update-container avec l'indicateur --container-restart-policy pour spécifier le règlement en matière de redémarrage d'un conteneur s'exécutant sur une VM.

Exécuter un conteneur avec un accès privilégié

Vous pouvez exécuter un conteneur avec un accès privilégié pour autoriser l'accès à tous les périphériques de l'hôte. Par défaut, les conteneurs sont exécutés sans bénéficier d'un accès privilégié et ne sont autorisés à accéder à aucun périphérique.

Console

  1. Accédez à la page "Instances de VM".

    Accéder à la page "Instances de VM"

  2. Cliquez sur le bouton Créer une instance pour créer une instance.
  3. Dans la section Conteneur, cochez l'option Déployer l'image du conteneur.
  4. Cliquez sur Options avancées des conteneurs.
  5. Cochez l'option Exécuter avec accès privilégié.

gcloud

Ajoutez le paramètre --container-privileged pour exécuter un conteneur avec un droit d'exécution. L'exemple suivant permet de lancer un conteneur busybox avec un accès privilégié :

gcloud compute instances create-with-container busybox-vm \
   --container-image docker.io/busybox:1.27 \
   --container-privileged

Exécutez la commande gcloud compute instances update-container avec l'indicateur --container-privileged pour mettre à jour un conteneur sur une VM. Incluez l'indicateur --no-container-privileged pour désactiver l'accès privilégié.

Attribuer un tampon pour STDIN dans l'environnement d'exécution du conteneur

Vous pouvez attribuer un tampon pour STDIN dans l'environnement d'exécution du conteneur afin de garder le flux STDIN ouvert dans un conteneur. Si cette option n'est pas définie, les lectures de STDIN dans le conteneur renverront toujours EOF.

Il est nécessaire de garder le flux STDIN ouvert afin d'établir une interface système interactive dans le conteneur (en plus d'attribuer un pseudo-TTY) et de permettre à ce dernier de recevoir ses entrées standards à partir d'un pipeline.

Console

  1. Accédez à la page "Instances de VM".

    Accéder à la page "Instances de VM"

  2. Cliquez sur le bouton Créer une instance pour créer une instance.
  3. Dans la section Conteneur, cochez l'option Déployer l'image du conteneur.
  4. Cliquez sur Options avancées des conteneurs.
  5. Cochez l'option Attribuer un tampon pour STDIN.

gcloud

Ajoutez le paramètre --container-stdin afin d'attribuer un tampon pour STDIN dans l'environnement d'exécution du conteneur. L'exemple suivant permet de démarrer un conteneur et de maintenir le flux STDIN ouvert :

gcloud compute instances create-with-container busybox-vm \
    --container-image docker.io/busybox:1.27 \
    --container-stdin

Exécutez la commande gcloud compute instances update-container avec l'indicateur --container-stdin pour mettre à jour un conteneur sur une VM. Incluez l'indicateur --no-container-stdin pour désactiver l'attribution d'un tampon pour STDIN.

Attribuer un pseudo-TTY

L'attribution d'un pseudo-TTY à un conteneur est nécessaire pour établir une interface système interactive dans le conteneur (et pour attribuer un tampon pour STDIN).

Console

  1. Accédez à la page "Instances de VM".

    Accéder à la page "Instances de VM"

  2. Cliquez sur le bouton Créer une instance pour créer une instance.
  3. Dans la section Conteneur, cochez l'option Déployer l'image du conteneur.
  4. Cliquez sur Options avancées des conteneurs.
  5. Cochez l'option Attribuer un pseudo-TTY.

gcloud

Ajoutez le paramètre --container-tty pour attribuer un pseudo-TTY à un conteneur. L'exemple suivant permet de lancer un conteneur et d'attribuer un pseudo-TTY :

 gcloud compute instances create-with-container busybox-vm \
    --container-image docker.io/busybox:1.27 \
    --container-stdin \
    --container-tty

Exécutez la commande gcloud compute instances update-container avec le paramètre --container-tty pour mettre à jour un conteneur sur une VM. Incluez le paramètre --no-container-tty pour ne pas attribuer de pseudo-TTY à un conteneur.

Ignorer la commande par défaut s'exécutant au démarrage du conteneur

La commande ENTRYPOINT d'une image de conteneur spécifie les fichiers exécutables à lancer au démarrage d'un conteneur et vous permet d'exécuter ce conteneur comme s'il s'agissait d'un fichier binaire.

Vous pouvez ignorer la commande ENTRYPOINT de l'image du conteneur.

Console

  1. Accédez à la page "Instances de VM".

    Accéder à la page "Instances de VM"

  2. Cliquez sur le bouton Créer une instance pour créer une instance.
  3. Dans la section Conteneur, cochez l'option Déployer l'image du conteneur.
  4. Cliquez sur Options avancées des conteneurs.
  5. Dans le champ Commande, saisissez une seule commande exécutable sans paramètres, par exemple : uptime.

gcloud

Ajoutez le paramètre --container-command pour ignorer la commande ENTRYPOINT de l'image de conteneur. L'exemple suivant permet d'exécuter la commande uptime dans un conteneur busybox pour afficher le temps écoulé depuis le dernier démarrage :

gcloud compute instances create-with-container busybox-vm \
   --container-image docker.io/busybox:1.27 \
   --container-command "uptime"

Exécutez la commande gcloud compute instances update-container avec l'indicateur --container-command afin de mettre à jour une commande pour un conteneur sur une VM.

Ajoutez le paramètre --clear-container-command avec la commande update-container pour effacer la commande par défaut du conteneur mis à jour.

Transmettre des arguments à la commande ENTRYPOINT du conteneur

Vous pouvez transmettre (c'est-à-dire ajouter) des arguments à la commande ENTRYPOINT d'un conteneur ou ignorer la commande CMD par défaut de celui-ci.

Console

  1. Accédez à la page "Instances de VM".

    Accéder à la page "Instances de VM"

  2. Cliquez sur le bouton Créer une instance pour créer une instance.
  3. Dans la section Conteneur, cochez l'option Déployer l'image du conteneur.
  4. Cliquez sur Options avancées des conteneurs.
  5. Sous Arguments de la commande, cliquez sur Ajouter un argument.
  6. Saisissez un argument de commande par champ.

gcloud

Ajoutez le paramètre --container-arg pour transmettre des arguments à la commande ENTRYPOINT d'une image de conteneur. Utilisez un paramètre distinct pour chaque argument.

L'exemple suivant permet d'exécuter la commande /bin/ash avec les arguments -c ‘ls -l’ dans un conteneur configuré pour exécuter automatiquement l'image busybox :

gcloud compute instances create-with-container busybox-vm \
   --container-image docker.io/busybox:1.27 \
   --container-command "/bin/ash" \
   --container-arg="-c" \
   --container-arg="ls -l"

Exécutez la commande gcloud compute instances update-container avec les indicateurs --container-arg afin de mettre à jour les arguments d'une commande pour un conteneur s'exécutant sur une VM. La mise à jour remplace la liste complète des arguments par la nouvelle liste.

Servez-vous du paramètre --clear-container-args avec la commande update-container pour supprimer tous les arguments de la déclaration de conteneurs.

Définir des variables d'environnement

Vous pouvez définir des variables d'environnement dans un conteneur. Seule la dernière valeur de la section [KEY] est prise en compte lorsque la section [KEY] est répétée plusieurs fois.

Console

  1. Accédez à la page "Instances de VM".

    Accéder à la page "Instances de VM"

  2. Cliquez sur le bouton Créer une instance pour créer une instance.
  3. Dans la section Conteneur, cochez l'option Déployer l'image du conteneur.
  4. Cliquez sur Options avancées des conteneurs.
  5. Sous Variables d'environnement, cliquez sur Ajouter une variable.
  6. Si nécessaire, ajoutez ou supprimez des variables d'environnement. Comptez une variable par ligne.

gcloud

Ajoutez le paramètre --container-env pour définir les variables d'environnement d'un conteneur. L'exemple suivant permet de définir trois variables d'environnement, HOME, MODE et OWNER :

gcloud compute instances create-with-container busybox-vm \
    --container-image docker.io/busybox:1.27 \
    --container-env HOME=/home,MODE=test,OWNER=admin

Servez-vous du paramètre --container-env-file pour définir les variables d'environnement à partir d'un fichier local. L'exemple suivant permet de définir les deux variables d'environnement du fichier env.txt :

gcloud compute instances create-with-container busybox-vm \
    --container-image docker.io/busybox:1.27 \
    --container-env-file ./env.txt

Le contenu du fichier env.txt est le suivant :

# this is a comment
HOME=/home
MODE=test
OWNER=admin

Exécutez la commande gcloud compute instances update-container avec l'indicateur --container-env ou --container-env-file pour mettre à jour les variables d'environnement d'un conteneur sur une VM. En procédant ainsi, vous mettrez à jour toutes les variables présentes dans la déclaration de conteneurs de l'instance de VM. Les variables ne figurant pas dans la déclaration de conteneurs sont ajoutées.

Ajoutez le paramètre --remove-container-env pour supprimer les variables d'environnement lors de la mise à jour d'un conteneur sur une VM. L'exemple suivant permet de supprimer les variables d'environnement appelées MODE et OWNER :

gcloud compute instances update-container busybox-vm \
    --remove-container-env MODE,OWNER

Si une variable d'environnement spécifiée n'existe pas, elle est ignorée sans notification.

Installer un répertoire hôte en tant que volume de données

Vous pouvez installer un répertoire depuis une VM hôte dans un conteneur.

Console

  1. Accédez à la page "Instances de VM".

    Accéder à la page "Instances de VM"

  2. Cliquez sur le bouton Créer une instance pour créer une instance.
  3. Dans la section Conteneur, cochez l'option Déployer l'image du conteneur.
  4. Cliquez sur Options avancées des conteneurs.
  5. Sous Montages de répertoires hôtes, cliquez sur Ajouter un volume.
  6. Spécifiez les éléments suivants :

    • Un chemin d'accès au montage, c'est-à-dire un chemin d'accès dans une structure de répertoires du conteneur indiquant où vous souhaitez installer un répertoire hôte
    • Un chemin d'accès à l'hôte, c'est-à-dire un chemin d'accès au répertoire hôte que vous souhaitez installer
    • Le mode d'installation du répertoire, c'est-à-dire en mode lecture-écriture ou en lecture seule

gcloud

Ajoutez le paramètre --container-mount-host-path pour installer un répertoire de VM hôte dans un conteneur. L'exemple suivant permet d'installer le répertoire hôte /tmp dans le conteneur à l'emplacement /logs, en mode lecture-écriture :

gcloud compute instances create-with-container busybox-vm \
    --container-image docker.io/busybox:1.27 \
    --container-mount-host-path mount-path=/logs,host-path=/tmp,mode=rw

Spécifiez mode=ro pour installer un répertoire hôte en mode lecture seule.

Exécutez la commande gcloud compute instances update-container avec l'indicateur --container-mount-host-path pour mettre à jour les installations du répertoire hôte sur un conteneur. Servez-vous du paramètre --remove-container-mounts pour supprimer les montages de volumes avec les chemins d'accès au montage spécifiés lors de la mise à jour. L'exemple suivant permet de supprimer un montage d'un chemin d'accès à l'hôte avec mount-path=/logs :

gcloud compute instances update-container busybox-vm \
    --remove-container-mounts /logs

Si le chemin d'accès au montage spécifié n'existe pas, il est ignoré sans notification.

Installer un système de fichiers tmpfs en tant que volume de données

Vous pouvez installer un système de fichiers tmpfs vide dans un conteneur.

Console

  1. Accédez à la page "Instances de VM".

    Accéder à la page "Instances de VM"

  2. Cliquez sur le bouton Créer une instance pour créer une instance.
  3. Dans la section Conteneur, cochez l'option Déployer l'image du conteneur.
  4. Cliquez sur Options avancées des conteneurs.
  5. Sous Montages Tmpfs, cliquez sur Ajouter un volume.
  6. Spécifiez un chemin d'accès au montage, c'est-à-dire un chemin d'accès dans une structure de répertoires du conteneur indiquant où vous souhaitez installer un volume tmpfs. Le volume tmpfs sera installé en mode lecture/écriture.

gcloud

Ajoutez le paramètre --container-mount-tmpfs pour installer un système de fichiers tmpfs vide dans un conteneur. L'exemple suivant permet d'installer un système de fichiers tmpfs dans le conteneur à l'emplacement /cache en mode lecture/écriture :

gcloud compute instances create-with-container busybox-vm \
   --container-image docker.io/busybox:1.27 \
   --container-mount-tmpfs mount-path=/cache

Exécutez la commande gcloud compute instances update-container avec l'indicateur --container-mount-tmpfs pour mettre à jour les montages tmpfs d'un conteneur. Servez-vous du paramètre --remove-container-mounts pour supprimer un montage tmpfs avec le chemin d'accès au montage spécifié lors de la mise à jour. L'exemple suivant permet de supprimer le montage tmpfs avec mount-path=/cache :

gcloud compute instances update-container busybox-vm \
    --remove-container-mounts /cache

Si le chemin d'accès au montage spécifié n'existe pas, il est ignoré sans notification.

Installer un disque persistant en tant que volume de données

Avec Container-Optimized OS 69 ou version ultérieure, vous pouvez installer des disques persistants à partir d'une VM hôte dans un conteneur.

Prérequis

  • Le disque doit disposer d'un système de fichiers ext4 ou n'en comprendre aucun. En l'absence de système de fichiers initial, l'agent de démarrage du conteneur formate le disque en ext4, et seuls l'installation et l'association en lecture/écriture sont acceptés.
  • Le disque doit être associé à la VM.
  • Les partitions et les appareils sans partition sont acceptés. Pour les installations de partition, le disque ne peut pas être vierge, mais doit contenir une table de partition existante.

Console

  1. Accédez à la page "Instances de VM".

    Accéder à la page "Instances de VM"

  2. Cliquez sur le bouton Créer une instance pour créer une instance.
  3. Dans la section Conteneur, cochez l'option Déployer l'image du conteneur.
  4. Cliquez sur Options avancées des conteneurs.
  5. Sous Montages de volume, cliquez sur Ajouter un volume.
  6. Sous Type de volume, sélectionnez Disk (Disque).
  7. Spécifiez un chemin d'accès au montage, c'est-à-dire un chemin d'accès dans une structure de répertoires du conteneur indiquant où vous souhaitez installer le disque persistant.
  8. Sous Nom du disque, sélectionnez un disque existant à installer ou associez un nouveau disque.
  9. Si le disque possède une table de partition, spécifiez le numéro de la partition à installer. Laissez ce champ vide si le disque ne dispose pas de partitions.
  10. Spécifiez le mode d'installation du répertoire : lecture/écriture ou lecture seule.

gcloud

Exécutez la commande gcloud compute instances create-with-container ou la commande gcloud compute instances update-container avec l'indicateur --container-mount-disk afin d'installer un disque persistant dans un conteneur.

L'exemple suivant permet d'installer deux disques, my-data-disk et my-scratch-disk, aux chemins d'accès /disks/data-disk et /disks/scratch-disk du conteneur.

gcloud compute instances create-with-container busybox-vm \
    --disk name=my-data-disk \
    --create-disk name=my-scratch-disk,auto-delete=yes,image=ubuntu-1710-artful-v20180315,image-project=ubuntu-os-cloud \
    --container-image docker.io/busybox:1.27 \
    --container-mount-disk mount-path="/disks/data-disk",name=my-data-disk,mode=ro \
    --container-mount-disk mount-path="/disks/scratch-disk",name=my-scratch-disk

Notez que l'indicateur --disk associe my-data-disk, que l'indicateur --create-disk crée et associe my-scatch-disk, et que les indicateurs --container-mount-disk installent les disques associés au conteneur. Comme aucun mode n'est spécifié pour my-scratch-disk, ce disque est installé sur le conteneur en mode lecture/écriture par défaut.

Exécutez la commande gcloud compute instances update-container avec l'indicateur --container-mount-disk pour installer d'autres disques associés ou modifier des montages de disque existants.

Spécifiez l'indicateur --remove-container-mounts pour supprimer un montage de volume de disque avec le chemin d'accès au montage spécifié. L'exemple suivant remplace le mode d'installation de my-data-disk par lecture/écriture et supprime le montage de disque au chemin mount-path="/disks/scratch-disk".

gcloud compute instances update-container busybox-vm \
    --container-mount-disk mount-path="/disks/data-disk",name=my-data-disk,mode=rw \
    --remove-container-mounts "/disks/scratch-disk"

Si le chemin d'accès au montage transmis à l'indicateur --remove-container-mounts n'existe pas, il est ignoré sans notification.

Publier des ports de conteneurs

Les VM comportant des conteneurs utilisent le mode réseau hôte, dans lequel des conteneurs partagent la pile réseau de l'hôte, et toutes les interfaces de l'hôte sont accessibles aux conteneurs.

Les ports de conteneur sont mappés individuellement sur les ports de la VM hôte. Par exemple, un port de conteneur 80 est mappé sur le port 80 de la VM hôte, et vous n'avez pas besoin de spécifier le paramètre de publication des ports (-p) pour que le mappage fonctionne.

Pour publier les ports de conteneurs, configurez les règles de pare-feu afin d'autoriser l'accès aux ports de l'instance de la VM hôte. Les ports correspondants du conteneur seront accessibles automatiquement, conformément aux règles du pare-feu.

Exemple : Publication du port 80 d'un conteneur NGINX

Voici un exemple de création d'une instance de VM avec un conteneur NGINX et d'autorisation du trafic vers le port 80 du conteneur.

  1. Créez une instance de VM avec un conteneur NGINX :

    gcloud compute instances create-with-container nginx-vm \
        --container-image gcr.io/cloud-marketplace/google/nginx1:1.12 \
        --tags http-server
    

    Le conteneur partage la pile réseau de la VM hôte, et le port 80 du conteneur est publié sur le port 80 de la VM hôte. Le tag http-server est utilisé comme tag cible pour la règle de pare-feu créée lors de l'étape suivante.

  2. Créez une règle de pare-feu pour autoriser les connexions au port 80 de l'instance de VM. La règle de pare-feu suivante autorise les connexions HTTP aux instances de VM avec le tag http-server :

    gcloud compute firewall-rules create allow-http \
        --allow tcp:80 --target-tags http-server
    

    Le conteneur commencera automatiquement à recevoir du trafic sur le port 80. Vous n'avez pas besoin d'effectuer de configuration supplémentaire.

    Vous pouvez créer des règles de pare-feu pour les associations protocole/port de la VM hôte où le protocole correspond à tcp ou à udp. Ces règles régissent efficacement l'accès des éléments extérieurs à la VM aux ports de conteneur correspondants.

Commentaires et questions

N'hésitez pas à nous faire part de vos commentaires et questions. Si vous souhaitez poser des questions, signaler des problèmes et demander de nouvelles fonctionnalités, veuillez contacter l'équipe chargée des conteneurs sur Compute Engine.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine