Déployer des conteneurs sur des VM et des groupes d'instances gérés

Cette page explique comment déployer des images Docker sur des groupes d'instances gérés et des instances de machine virtuelle Google Compute Engine.

Pour déployer et lancer votre conteneur sur un groupe d'instances géré ou une instance de VM Compute Engine, vous devez fournir un nom d'image Docker et configurer le mode d'exécution du conteneur lors de la création d'une VM ou d'un modèle d'instance. Compute Engine se charge du reste, en fournissant par exemple une image Container-Optimized OS (COS) à jour avec Docker installé et en lançant le conteneur au démarrage de la VM. Pour plus d'informations sur les avantages du déploiement de conteneurs sur des VM, consultez la section Choisir de déployer des conteneurs sur des VM et des groupes d'instances ci-dessous.

Avant de commencer

Choisir de déployer des conteneurs sur des VM et des groupes d'instances

Déployer des conteneurs sur Compute Engine vous permet de simplifier le déploiement des applications tout en contrôlant votre infrastructure de VM.

  • Gérez les VM qui exécutent des conteneurs de la même manière que vous traiteriez toute autre VM lors de la configuration et de la gestion de votre infrastructure Compute Engine.
  • Créez des services adaptables à l'aide de groupes d'instances gérés exécutant des conteneurs, ces derniers offrant des fonctionnalités telles que l'autoscaling, l'autoréparation, les mises à jour progressives, les déploiements multizones et l'équilibrage de charge.
  • Gérez les VM avec conteneurs à l'aide de processus et d'outils familiers, comme l'outil de ligne de commande gcloud ou l'API Compute Engine.

Vous pouvez également envisager de déployer les conteneurs dans Kubernetes Engine pour :

  • exécuter un grand nombre de microservices ;
  • faire en sorte que les conteneurs démarrent plus rapidement ;
  • tirer parti de l'orchestration automatisée de Kubernetes, y compris des mises à niveau automatiques, de la réparation automatique des nœuds et de l'autoscaling.

L'exécution de chaque microservice sur une VM distincte sur Compute Engine peut entraîner une surcharge du système d'exploitation et représenter un coût important. Avec Kubernetes Engine, vous pouvez déployer plusieurs conteneurs et groupes de conteneurs pour chaque instance de VM, ce qui permet d'utiliser plus efficacement la VM hôte pour les microservices tout en réduisant l'encombrement.

Fonctionnement du déploiement des conteneurs sur Compute Engine

Les méthodes courantes de déploiement de logiciels sur une instance de VM Compute Engine sont les suivantes :

  • Déployer le logiciel sur le disque de démarrage de VM à l'aide d'un script de démarrage ou de cloud-init
  • Créer une image de disque de démarrage personnalisée avec les logiciels préinstallés

Les deux méthodes ci-dessus combinent les tâches de configuration de l'application et de configuration de l'environnement du système d'exploitation hôte. En tant que développeur, vous devez suivre et résoudre avec soin toutes les dépendances d'exécution. Par exemple, si deux applications s'exécutant sur une VM utilisent des versions différentes de la même bibliothèque, vous devez installer les deux versions et pointer vers celles-ci via des variables système.

Instance de VM avec des applications déployées directement sur le système d'exploitation hôte

Vous pouvez également déployer des logiciels dans un conteneur directement sur une instance de VM ou sur un groupe d'instances géré. Chaque conteneur inclut à la fois le logiciel d'application et les bibliothèques requises. Il est isolé des applications et des bibliothèques du système d'exploitation hôte. Vous pouvez facilement déplacer les conteneurs entre les environnements de déploiement, sans avoir à vous préoccuper des conflits de versions de bibliothèques entre un conteneur et son système d'exploitation hôte.

Instance de VM avec des applications déployées dans un conteneur

Voici le processus de déploiement d'un conteneur sur Compute Engine :

  1. Regroupez votre application et les bibliothèques requises dans une image Docker, puis publiez cette dernière dans Container Registry (ou publiez-la en mode public dans Docker Hub ou un autre registre).
  2. Spécifiez un nom d'image Docker ainsi qu'une configuration de docker run lors de la création d'une instance de VM ou d'un modèle d'instance pour un groupe d'instances géré.

Une fois que vous avez demandé la création d'une instance de VM ou d'un modèle d'instance, Compute Engine exécute les tâches suivantes :

  1. Compute Engine crée une instance de VM ou un modèle d'instance à l'aide d'une image Container-Optimized OS fournie par Google. Cette image inclut l'environnement d'exécution Docker et des logiciels supplémentaires, chargés de démarrer votre conteneur.
  2. Compute Engine stocke les paramètres du conteneur dans les métadonnées d'instance sous la clé de métadonnées gce-container-declaration.
  3. L'image Container-Optimized OS extrait l'image du conteneur du dépôt, puis démarre le conteneur au moment du démarrage de la VM, à l'aide de la configuration de commande docker run stockée dans les métadonnées de l'instance.
Étapes permettant de créer une instance de VM ou un groupe d'instances géré exécutant un conteneur

Limites

  • Vous ne pouvez déployer qu'un seul conteneur pour chaque instance de VM. Envisagez d'utiliser Kubernetes Engine si vous devez déployer plusieurs conteneurs par instance de VM.
  • Vous ne pouvez déployer des conteneurs qu'à partir d'un dépôt public ou d'un dépôt privé dans Google Container Registry. Les autres dépôts privés ne sont pas compatibles actuellement.
  • Vous ne pouvez pas mapper les ports d'une instance de VM aux ports du conteneur (option -p de Docker).
  • Avec cette méthode de déploiement, vous ne pouvez utiliser que des images Container-Optimized OS.
  • Cette fonctionnalité n'est disponible que via la console Google Cloud Platform ou l'outil de ligne de commande gcloud.

Préparer un conteneur pour le déploiement

Rendez votre image de conteneur accessible à Compute Engine de l'une des façons suivantes :

  • Importez votre image Docker sur Google Container Registry.
  • Utilisez n'importe quelle image de conteneur publique provenant de Docker Hub ou d'autres registres.

Déployer un conteneur sur une nouvelle instance de VM

Vous pouvez déployer un conteneur sur une nouvelle instance de VM à l'aide de la console Google Cloud Platform ou de l'outil de ligne de commande gcloud.

Console

L'exemple suivant illustre le déploiement d'un conteneur depuis une image Docker Nginx fournie par Google (gcr.io/cloud-marketplace/google/nginx1:1.12) sur une instance de VM. Si vous souhaitez utiliser une autre image Docker, indiquez-la à la place de gcr.io/cloud-marketplace/google/nginx1:1.12 dans les exemples ci-dessous.

  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 la case Déployer l'image du conteneur.
  4. Spécifiez un nom d'image de conteneur sous Image du conteneur, puis configurez des options d'exécution du conteneur si vous le souhaitez. Par exemple, vous pouvez indiquer gcr.io/cloud-marketplace/google/nginx1:1.12 pour l'image du conteneur.
  5. Cliquez sur Créer.

gcloud

Utilisez la commande gcloud compute instances create-with-container :

 gcloud compute instances create-with-container [INSTANCE_NAME] \
     --container-image [DOCKER_IMAGE]

Par exemple, la commande suivante crée une instance de VM nommée nginx-vm, qui lancera et exécutera l'image Docker gcr.io/cloud-marketplace/google/nginx1:1.12.

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

En savoir plus sur la commande gcloud compute instances create-with-container

Vous devez toujours spécifier le nom complet d'une image Docker lorsque vous utilisez une image publique provenant de Docker Hub. Par exemple, indiquez le nom d'image suivant pour déployer une image de conteneur Apache :

docker.io/httpd:2.4

Mettre à jour un conteneur sur une instance de VM

Vous pouvez mettre à jour une image Docker et des options de configuration pour exécuter le conteneur sur une instance de VM à l'aide de la console Google Cloud Platform ou de l'outil de ligne de commande gcloud.

Lorsque vous mettez à jour une VM qui exécute un conteneur, Compute Engine effectue deux étapes :

  • Il met à jour la déclaration du conteneur sur l'instance. Il stocke ensuite la déclaration mise à jour dans les métadonnées d'instance, sous la clé de métadonnées gce-container-declaration.
  • Il arrête et redémarre l'instance pour activer la configuration mise à jour, si l'instance est en cours d'exécution. Si elle est arrêtée, il met à jour la déclaration du conteneur et maintient l'arrêt de l'instance. L'instance de VM télécharge la nouvelle image et lance le conteneur au démarrage de la VM.

Console

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

    Accéder à la page "Instances de VM"

  2. Cliquez sur le nom d'une instance que vous devez mettre à jour.
  3. Cliquez sur Modifier dans la page de détails de l'instance.
  4. Spécifiez une nouvelle image de conteneur et mettez à jour les options d'exécution du conteneur si nécessaire.
  5. Cliquez sur Enregistrer et redémarrer pour enregistrer les modifications. Compute Engine enregistre les modifications et redémarre l'instance automatiquement pour exécuter la mise à jour. Une fois la VM redémarrée, elle télécharge la nouvelle image et lance le conteneur avec la configuration mise à jour.

gcloud

Mettez à jour la déclaration du conteneur à l'aide de la commande gcloud compute instances update-container. Exemple :

gcloud compute instances update-container nginx-vm \
    --container-image gcr.io/cloud-marketplace/google/nginx1:1.13

Cette commande définit l'image de conteneur sur gcr.io/cloud-marketplace/google/nginx1:1.13 et redémarre l'instance pour activer les modifications. Vous pouvez également mettre à jour les propriétés décrites dans la page Configurer des options pour exécuter votre conteneur en ajoutant des indicateurs correspondants.

Une fois l'instance redémarrée, elle télécharge la nouvelle image de conteneur et lance le conteneur avec la nouvelle configuration.

Déployer un conteneur sur un groupe d'instances géré

Pour déployer un conteneur sur un nouveau groupe d'instances géré à l'aide de la console Google Cloud Platform ou de l'outil de ligne de commande gcloud, procédez comme suit :

  1. Créez un modèle d'instance basé sur une image Docker.
  2. Créez un groupe d'instances géré à partir du nouveau modèle d'instance.

Console

L'exemple suivant illustre la création d'un modèle d'instance qui déploie un conteneur depuis une image Docker Nginx fournie par Google (gcr.io/cloud-marketplace/google/nginx1:1.12) sur un groupe d'instances géré. Si vous souhaitez utiliser une autre image Docker, indiquez-la à la place de gcr.io/cloud-marketplace/google/nginx1:1.12 dans l'exemple ci-dessous.

  1. Accédez à la page "Modèles d'instances".

    Accéder à la page "Modèles d'instances"

  2. Cliquez sur le bouton Créer un modèle d'instance pour créer un modèle d'instance.
  3. Dans la section Conteneur, cochez la case Déployer l'image du conteneur.
  4. Spécifiez le nom de l'image Docker sous Image du conteneur, puis configurez des options d'exécution du conteneur si vous le souhaitez. Par exemple, vous pouvez indiquer gcr.io/cloud-marketplace/google/nginx1:1.12 pour l'image du conteneur.
  5. Cliquez sur Créer.

Ensuite, créez un groupe d'instances géré à l'aide du nouveau modèle d'instance.

gcloud

Créez un modèle d'instance pour exécuter des images Docker à l'aide de la commande gcloud compute instance-templates create-with-container :

 gcloud compute instance-templates create-with-container [TEMPLATE_NAME] \
 --container-image [DOCKER_IMAGE]

Vous pouvez également configurer des options d'exécution du conteneur si vous le souhaitez.

Par exemple, la commande suivante crée un modèle d'instance nommé nginx-template, qui inclut des informations sur l'image Docker. Une instance de VM créée à partir de ce modèle lancera et exécutera l'image Docker gcr.io/cloud-marketplace/google/nginx1:1.12 au démarrage de la VM.

 gcloud compute instance-templates create-with-container nginx-template \
     --container-image gcr.io/cloud-marketplace/google/nginx1:1.12

Ensuite, créez un groupe d'instances géré à l'aide du nouveau modèle d'instance.

Maintenant que vous disposez d'un modèle d'instance, vous pouvez vous en servir pour un créer un groupe d'instances géré. Par exemple, pour créer un groupe d'instances géré à l'aide de l'outil gcloud avec le modèle nginx-template que vous venez de créer, exécutez la commande suivante :

gcloud compute instance-groups managed create example-group \
    --base-instance-name nginx-vm \
    --size 3 \
    --template nginx-template

Mettre à jour un groupe d'instances géré exécutant un conteneur

Vous pouvez mettre à jour un groupe d'instances géré pour déployer une nouvelle version d'une image Docker ou de l'image Container-Optimized OS.

Mettre à jour un groupe d'instances géré vers une nouvelle version d'une image de conteneur

Vous pouvez déployer une nouvelle version d'une image Docker sur un groupe d'instances géré à l'aide de Managed Instance Group Updater, selon une procédure en trois étapes :

  1. Préparez une nouvelle image Docker pour le déploiement.
  2. Créez un modèle d'instance basé sur la nouvelle image Docker, de la même manière que vous le feriez pour un modèle basé sur un conteneur.
  3. Mettez à jour un groupe d'instances géré avec le nouveau modèle d'instance à l'aide de Managed Instance Group Updater.

Mettre à jour un groupe d'instances géré vers une nouvelle version de l'image Container-Optimized OS

Google met à jour régulièrement les images Container-Optimized OS, et vous souhaiterez peut-être appliquer ces mises à jour à vos groupes d'instances gérés en conteneurs sans modifier l'image Docker. Vous pouvez mettre à jour un groupe d'instances géré vers une nouvelle version de l'image Container-Optimized OS à l'aide de la console Google Cloud Platform ou de l'outil de ligne de commande gcloud, selon une procédure en deux étapes :

  1. Créez un modèle d'instance basé sur la version actuelle de l'image Docker, de la même manière que vous le feriez pour un modèle basé sur un conteneur pour un nouveau groupe d'instances géré. La dernière version compatible d'une image Container-Optimized OS est utilisée par défaut.
  2. Mettez à jour un groupe d'instances géré avec le nouveau modèle d'instance à l'aide de Managed Instance Group Updater.

Se connecter à un conteneur à l'aide de SSH

Vous pouvez vous connecter à un conteneur sur une VM à l'aide de SSH. Au moyen de l'outil gcloud, exécutez la commande gcloud compute ssh avec l'indicateur --container :

gcloud compute ssh [INSTANCE_NAME] \
   --container [CONTAINER_NAME]

où :

  • [INSTANCE_NAME] est le nom de l'instance de VM.
  • [CONTAINER_NAME] est le nom du conteneur.

En savoir plus sur la commande gcloud compute ssh et ses arguments

Afficher les journaux

Vous pouvez afficher trois types de journaux liés aux conteneurs.

  1. Les journaux de l'agent de démarrage, également appelés journaux konlet. L'agent de démarrage analyse la configuration du conteneur et exécute des tâches pour démarrer ce dernier sur une instance de VM Compute Engine.

  2. Les journaux d'événements Docker consignent les événements du conteneur, y compris les événements de démarrage et d'arrêt. Ces journaux sont disponibles si vous utilisez COS 69 ou une version ultérieure.

  3. Les journaux de votre conteneur incluent le journal STDOUT des applications qui s'exécutent dans votre conteneur.

Afficher les journaux de l'agent de démarrage

Les journaux de l'agent de démarrage sont disponibles dans la console série via le service système journald inclus dans l'image de l'OS et depuis Stackdriver Logging.

Afficher les journaux de l'agent de démarrage dans la console série

Console

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

    Accéder à la page "Instances de VM"

  2. Sélectionnez l'instance de VM pour laquelle vous souhaitez afficher les journaux de l'agent de démarrage.
  3. Sous Logs (Journaux), cliquez sur Serial port 1 (console) (Port de série 1 (console)) pour afficher les journaux de la console série.

gcloud

Utilisez la commande get-serial-port-output pour afficher les journaux sur le port série de l'instance.

gcloud compute instances get-serial-port-output [INSTANCE_NAME]

[INSTANCE_NAME] est le nom de l'instance de VM.

Par exemple, la commande suivante permet d'afficher la sortie du port série pour une instance de VM nommée nginx-vm :

gcloud compute instances get-serial-port-output nginx-vm

Afficher les journaux de l'agent de démarrage dans journald

  1. Connectez-vous à votre instance avec conteneur à l'aide de SSH.
  2. Exécutez la commande sudo journalctl pour afficher les journaux de démarrage de conteneurs et de démarrage de VM. La commande suivante permet de filtrer les journaux de façon à n'afficher que ceux de l'agent de démarrage de conteneurs (konlet) :

    sudo journalctl -u konlet*
    

Afficher les journaux de l'agent de démarrage dans Stackdriver

Console

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

    Accéder à la page "Instances de VM"

  2. Sélectionnez l'instance de VM pour laquelle vous souhaitez afficher les journaux de l'agent de démarrage.
  3. Sous Logs (Journaux), cliquez sur Stackdriver Logging pour afficher les journaux Stackdriver.

  4. Saisissez un filtre de recherche pour obtenir les journaux de l'agent de démarrage.

    Si vous utilisez COS 68 ou une version antérieure, saisissez le filtre suivant :

    resource.type="global"
    logName="projects/[PROJECT_ID]/logs/gcplogs-docker-driver"
    jsonPayload.container.imageName:"gcr.io/gce-containers/konlet"
    jsonPayload.instance.name="[INSTANCE_NAME]"
    

    Si vous utilisez COS 69 ou une version ultérieure, saisissez le filtre suivant :

    resource.type="gce_instance"
    logName="projects/[PROJECT_ID]/logs/cos_system"
    jsonPayload.SYSLOG_IDENTIFIER="konlet-startup"
    jsonPayload._HOSTNAME="[INSTANCE_NAME]"
    

    Où :

    • [PROJECT_ID] est l'ID du projet contenant l'instance.
    • [INSTANCE_NAME] est le nom de l'instance pour laquelle vous souhaitez obtenir des journaux.

gcloud

Exécutez la commande gcloud logging read avec un filtre approprié pour afficher les journaux de l'agent de démarrage de conteneurs.

Si vous utilisez COS 68 ou une version antérieure, saisissez la commande et le filtre suivants :

gcloud logging read "resource.type=global AND \
    logName=projects/[PROJECT_ID]/logs/gcplogs-docker-driver AND \
    jsonPayload.instance.name=[INSTANCE_NAME]"

Si vous utilisez COS 69 ou une version ultérieure, saisissez la commande et le filtre suivants :

gcloud logging read "resource.type=gce_instance AND \
    logName=projects/[PROJECT_ID]/logs/cos_system AND \
    jsonPayload.SYSLOG_IDENTIFIER=konlet-startup AND \
    jsonPayload._HOSTNAME=[INSTANCE_NAME]"

Où :

  • [PROJECT_ID] est l'ID du projet contenant l'instance.
  • [INSTANCE_NAME] est le nom de l'instance pour laquelle vous souhaitez obtenir des journaux.

Si vous souhaitez par exemple afficher les 10 derniers journaux de l'agent de démarrage dans Stackdriver pour une instance de VM nginx-vm exécutant COS 70 dans le projet my-project, exécutez la commande suivante :

gcloud logging read "resource.type=gce_instance AND \
    logName=projects/my-project/logs/cos_system AND \
    jsonPayload.SYSLOG_IDENTIFIER=konlet-startup AND \
    jsonPayload._HOSTNAME=nginx-vm" \
    --limit 10

Afficher les journaux d'événements Docker

Si vous utilisez COS 69 ou une version ultérieure, vous pouvez consulter les journaux d'événements Docker dans journald et Stackdriver.

Afficher les journaux d'événements Docker dans journald

  1. Connectez-vous à votre instance avec conteneur à l'aide de SSH.
  2. Exécutez la commande sudo journalctl avec le filtre suivant pour afficher les journaux d'événements Docker.

    sudo journalctl -u docker-events-collector
    

Afficher les journaux d'événements Docker dans Stackdriver

Console

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

    Accéder à la page "Instances de VM"

  2. Sélectionnez l'instance de VM pour laquelle vous souhaitez afficher les journaux de l'agent de démarrage.
  3. Sous Logs (Journaux), cliquez sur Stackdriver Logging pour afficher les journaux Stackdriver.

  4. Saisissez le filtre de recherche suivant pour obtenir les journaux d'événements Docker.

    resource.type="gce_instance"
    logName="projects/[PROJECT_ID]/logs/cos_system"
    jsonPayload._HOSTNAME="[INSTANCE_NAME]"
    jsonPayload.SYSLOG_IDENTIFIER="docker"
    

    Où :

    • [PROJECT_ID] est l'ID du projet contenant l'instance.
    • [INSTANCE_NAME] est le nom de l'instance pour laquelle vous souhaitez obtenir des journaux.

gcloud

Exécutez la commande gcloud logging read avec un filtre approprié pour afficher les journaux d'événements Docker.

gcloud logging read "resource.type=gce_instance AND \
      logName=projects/[PROJECT_ID]/logs/cos_system AND \
      jsonPayload._HOSTNAME=[INSTANCE_NAME] AND \
      jsonPayload.SYSLOG_IDENTIFIER=docker"

Où :

  • [PROJECT_ID] est l'ID du projet contenant l'instance.
  • [INSTANCE_NAME] est le nom de l'instance pour laquelle vous souhaitez obtenir des journaux.

Si vous souhaitez par exemple afficher les 10 derniers journaux d'événements Docker dans Stackdriver pour une instance de VM nginx-vm exécutant COS 70 dans le projet my-project, exécutez la commande suivante :

gcloud logging read "resource.type=gce_instance AND \
    logName=projects/my-project/logs/cos_system AND \
    jsonPayload._HOSTNAME=nginx-vm AND \
    jsonPayload.SYSLOG_IDENTIFIER=docker" \
    --limit 10

Afficher les journaux d'un conteneur

Console

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

    Accéder à la page "Instances de VM"

  2. Sélectionnez l'instance de VM pour laquelle vous souhaitez afficher les journaux de l'agent de démarrage.
  3. Sous Logs (Journaux), cliquez sur Stackdriver Logging pour afficher les journaux Stackdriver.

  4. La page Stackdriver Logging se charge avec un filtre de recherche par défaut. Si vous utilisez COS 69 ou une version ultérieure, examinez le filtre et copiez la valeur de resource.labels.instance_id. Vous en aurez besoin par la suite.

  5. Mettez à jour le filtre de recherche pour obtenir les journaux du conteneur.

    Si vous utilisez COS 68 ou une version antérieure, saisissez le filtre suivant :

    logName="projects/[PROJECT_ID]/logs/gcplogs-docker-driver"
    jsonPayload.container.name="/[INSTANCE_NAME]"
    

    Où :

    • [PROJECT_ID] est l'ID du projet contenant l'instance.
    • [INSTANCE_NAME] est le nom de l'instance pour laquelle vous souhaitez obtenir des journaux.

    Si vous utilisez COS 69 ou une version ultérieure, saisissez le filtre suivant :

    resource.type="gce_instance"
    logName="projects/[PROJECT_ID]/logs/cos_containers"
    resource.labels.instance_id="[INSTANCE_ID]"
    

    Où :

    • [PROJECT_ID] est l'ID du projet contenant l'instance.
    • [INSTANCE_ID] est l'ID de l'instance pour laquelle vous souhaitez obtenir les journaux.

gcloud

Exécutez la commande gcloud logging read avec un filtre approprié pour afficher les journaux du conteneur.

Si vous utilisez COS 68 ou une version antérieure, saisissez la commande et le filtre suivants :

gcloud logging read "logName=projects/[PROJECT_ID]/logs/gcplogs-docker-driver AND \
    jsonPayload.container.name=/[INSTANCE_NAME]"

Si vous utilisez COS 69 ou une version ultérieure, procédez comme suit :

  1. Déterminez l'ID de l'instance pour laquelle vous souhaitez obtenir des journaux.

    gcloud compute instances describe [INSTANCE_NAME] \
        --zone [ZONE] \
        --format="value(id)"
    

    Où :

    • [ZONE est la zone où se trouve l'instance.
    • [INSTANCE_NAME] est le nom de l'instance pour laquelle vous souhaitez obtenir des journaux.
  2. Exécutez la commande et le filtre suivants pour afficher les journaux de conteneur de l'instance.

    gcloud logging read "resource.type=gce_instance AND \
        logName=projects/[PROJECT_ID]/logs/cos_containers AND \
        resource.labels.instance_id=[INSTANCE_ID]"
    

    Où :

    • [PROJECT_ID] est l'ID du projet contenant l'instance.
    • [INSTANCE_ID] est l'ID de l'instance.

    Si vous souhaitez par exemple afficher les 10 derniers journaux de conteneur dans Stackdriver pour une instance de VM ayant l'ID 555123456789012345 et exécutant COS 70 dans le projet my-project, exécutez la commande suivante :

    gcloud logging read "resource.type=gce_instance AND \
        logName=projects/my-project/logs/cos_containers AND \
        resource.labels.instance_id=555123456789012345" \
        --limit 10
    

Spécifier des images ou des familles d'images optimisées pour les conteneurs

Par défaut, les modèles d'instance ou les instances de VM en conteneurs sont créés à l'aide de la dernière image optimisée pour les conteneurs compatible. L'image appartient au projet cos-cloud.

Vous pouvez remplacer ce paramétrage par défaut par une autre image de la version 62 ou supérieure, provenant des familles d'images cos-stable, cos-beta ou cos-dev, ou par l'une de ces familles d'images (appartenant toutes au projet cos-cloud).

Ces familles d'images comprennent des images optimisées pour les conteneurs provenant de trois versions disponibles différentes :

  • La version dev, qui est mise à jour régulièrement, comporte toutes les dernières modifications.
  • La version beta, qui est mise à jour moins fréquemment, est une image qualifiée en version bêta.
  • La version stable offre une version compatible et testée plus longtemps. Elle n'est mise à jour que rarement, pour les changements importants (si nécessaire).

Par exemple, à l'aide de l'outil gcloud, spécifiez l'indicateur --image pour remplacer l'image optimisée pour les conteneurs par défaut, ou bien l'indicateur --image-family pour sélectionner la dernière image de la famille indiquée au moment de la création de la VM.

L'exemple suivant illustre la création d'une instance de VM en conteneur à l'aide de la dernière image de la famille d'images cos-dev :

 gcloud compute instances create-with-container nginx-vm \
   --image-family cos-dev \
   --image-project cos-cloud \
   --container-image gcr.io/cloud-marketplace/google/nginx1:1.12

Configurer les règles de pare-feu

Les VM en conteneurs lancent des conteneurs avec le réseau défini sur le mode hôte. Un conteneur partage la pile réseau de l'hôte, et toutes les interfaces de l'hôte sont disponibles pour le conteneur.

Les règles de pare-feu de Google Cloud Platform bloquent toutes les connexions entrantes à une instance de VM et autorisent toutes les connexions sortantes d'une instance de VM par défaut.

Créez des règles de pare-feu pour autoriser les connexions entrantes à votre instance et donc au conteneur.

Configurer des options pour exécuter un conteneur

Vous pouvez configurer les options suivantes pour exécuter votre conteneur :

  • Spécifier une stratégie de redémarrage du conteneur.
  • Remplacer la commande ENTRYPOINT du conteneur (commande par défaut à exécuter au démarrage du conteneur).
  • Transmettre des arguments à la commande ENTRYPOINT du conteneur.
  • Exécuter un conteneur en mode privilégié.
  • Monter un répertoire hôte ou tmpfs en tant que volume de données à l'intérieur du conteneur.
  • Définir des variables d'environnement.
  • Allouer un tampon pour STDIN dans l'environnement d'exécution du conteneur.
  • Allouer un pseudo-TTY.

En savoir plus sur la configuration des options pour exécuter votre conteneur

Étapes suivantes

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

Envoyer des commentaires concernant…

Documentation Compute Engine