Avant de commencer
- Si vous ne connaissez pas bien les conteneurs, consultez la page Conteneurs sur Compute Engine.
- Si vous ne connaissez pas bien Docker, lisez la documentation Docker.
- Consultez la page relative au déploiement de conteneurs sur Compute Engine.
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud.
Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
Accédez à la page Créer un modèle d'instance.
Dans la section Conteneur, cochez la case Déployer une image de conteneur dans cette instance de VM, puis développez Options avancées des conteneurs.
- Dans Google Cloud CLI, utilisez la commande
gcloud compute instance-templates create-with-container
comme indiqué dans les exemples suivants. Accéder à la page Créer une instance.
Dans la section Conteneur, cliquez sur Déployer le conteneur.
Sur la page Configurer le conteneur, procédez comme suit :
- Spécifiez un nom d'image de conteneur.
- Dans la section Règle de redémarrage, sélectionnez la règle de redémarrage du conteneur.
- Pour confirmer les détails du conteneur, cliquez sur Sélectionner.
Poursuivez le processus de création de la VM.
always
(par défaut)on-failure
never
Accéder à la page Créer une instance.
Dans la section Conteneur, cliquez sur Déployer le conteneur.
Sur la page Configurer le conteneur, procédez comme suit :
- Spécifiez un nom d'image de conteneur.
- Sélectionnez Exécuter avec accès privilégié.
- Pour confirmer les détails du conteneur, cliquez sur Sélectionner.
Poursuivez le processus de création de la VM.
Accéder à la page Créer une instance.
Dans la section Conteneur, cliquez sur Déployer le conteneur.
Sur la page Configurer le conteneur, procédez comme suit :
- Spécifiez un nom d'image de conteneur.
- Sélectionnez Attribuer un tampon pour STDIN.
- Pour confirmer les détails du conteneur, cliquez sur Sélectionner.
Poursuivez le processus de création de la VM.
Accéder à la page Créer une instance.
Dans la section Conteneur, cliquez sur Déployer le conteneur.
Sur la page Configurer le conteneur, procédez comme suit :
- Spécifiez un nom d'image de conteneur.
- Sélectionnez Attribuer un pseudo-TTY.
- Pour confirmer les détails du conteneur, cliquez sur Sélectionner.
Poursuivez le processus de création de la VM.
Accéder à la page Créer une instance.
Dans la section Conteneur, cliquez sur Déployer le conteneur.
Sur la page Configurer le conteneur, procédez comme suit :
- Spécifiez un nom d'image de conteneur.
- Dans le champ Commande, saisissez une seule commande exécutable sans paramètres, par exemple :
uptime
. - Pour confirmer les détails du conteneur, cliquez sur Sélectionner.
Poursuivez le processus de création de la VM.
Accéder à la page Créer une instance.
Dans la section Conteneur, cliquez sur Déployer le conteneur.
Sur la page Configurer le conteneur, procédez comme suit :
- Spécifiez un nom d'image de conteneur.
- Dans la section Arguments, cliquez sur Ajouter un argument.
- Saisissez un argument de commande pour chaque case.
- Pour confirmer les détails du conteneur, cliquez sur Sélectionner.
Poursuivez le processus de création de la VM.
Accéder à la page Créer une instance.
Dans la section Conteneur, cliquez sur Déployer le conteneur.
Sur la page Configurer le conteneur, procédez comme suit :
- Spécifiez un nom d'image de conteneur.
- Dans la section Variables d'environnement, cliquez sur Ajouter une variable.
- Si nécessaire, ajoutez ou supprimez des variables d'environnement. Comptez une variable pour chaque ligne.
- Pour confirmer les détails du conteneur, cliquez sur Sélectionner.
Poursuivez le processus de création de la VM.
Accéder à la page Créer une instance.
Dans la section Conteneur, cliquez sur Déployer le conteneur.
Sur la page Configurer le conteneur, procédez comme suit :
- Spécifiez un nom d'image de conteneur.
- Dans la section Montages de volume, cliquez sur Ajouter un volume.
Dans la liste Type de volume, sélectionnez Répertoire, puis procédez comme suit :
- Dans le champ Installer le chemin, spécifiez un chemin d'accès au montage dans une structure de répertoires du conteneur indiquant où vous souhaitez installer un répertoire hôte.
- Dans le champ Chemin d'accès de l'hôte, spécifiez un chemin d'accès au répertoire hôte à installer.
- Dans la liste Mode, indiquez si vous souhaitez installer le répertoire en mode lecture-écriture ou en lecture seule.
Pour confirmer les détails du conteneur, cliquez sur Sélectionner.
Poursuivez le processus de création de la VM.
Accéder à la page Créer une instance.
Dans la section Conteneur, cliquez sur Déployer le conteneur.
Sur la page Configurer le conteneur, procédez comme suit :
- Spécifiez un nom d'image de conteneur.
- Dans la section Montages de volume, cliquez sur Ajouter un volume.
- Dans la liste Type de volume, sélectionnez TmpFS.
- Dans le champ Chemin d'accès au montage, spécifiez un chemin d'accès au montage dans une structure de répertoires du conteneur indiquant où vous souhaitez installer un volume TmpFS.
- Dans la liste Mode, indiquez si vous souhaitez installer le volume TmpFS en mode lecture/écriture ou en lecture seule.
- Pour confirmer les détails du conteneur, cliquez sur Sélectionner.
Poursuivez le processus de création de la VM.
- 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 enext4
, et seules l'installation et l'association en lecture/écriture sont acceptées. - 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.
Accéder à la page Créer une instance.
Dans la section Conteneur, cliquez sur Déployer le conteneur.
Sur la page Configurer le conteneur, procédez comme suit :
- Spécifiez un nom d'image de conteneur.
- Dans la section Montages de volume, cliquez sur Ajouter un volume.
- Dans la liste Type de volume, sélectionnez Disque.
- Dans le champ Chemin d'accès au montage, spécifiez un chemin d'accès dans la structure de répertoires du conteneur dans lequel vous souhaitez installer le disque persistant.
- Dans la liste Nom du disque, sélectionnez un disque existant à installer.
- Dans le champ Partition, spécifiez le numéro de partition à installer si le disque possède une table de partition. Si le disque ne comporte aucune partition, laissez ce champ vide.
- Dans la liste Mode, indiquez si vous souhaitez installer le répertoire en mode lecture-écriture ou en lecture seule.
- Pour confirmer les détails du conteneur, cliquez sur Sélectionner.
Poursuivez le processus de création de la VM.
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.15 \ --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ée comme tag cible pour la règle de pare-feu créée lors de l'étape suivante.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 commence 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 combinaisons protocole/port de la VM hôte dont le protocole correspond à
tcp
ouudp
. Ces règles régissent efficacement l'accès des éléments extérieurs à la VM aux ports de conteneur correspondants.- Découvrez comment déployer des conteneurs Docker sur Compute Engine.
- Apprenez-en plus sur Container-Optimized OS.
Lorsque vous créez une instance ou un modèle d'instance à utiliser pour déployer des conteneurs sur des VM et des MIG, spécifiez la configuration du conteneur à l'aide de la console Google Cloud ou de la Google Cloud CLI.
Les sections suivantes décrivent comment configurer les options concernant les instances de VM, mais vous pouvez également les configurer lors de la création d'un modèle d'instance. Utilisez Google Cloud Console ou Google Cloud CLI pour configurer les options des instances de VM dans un modèle d'instance.
Console
gcloud
Spécifier une règle de redémarrage
Vous pouvez définir une règle de redémarrage pour indiquer si vous souhaitez redémarrer des conteneurs en cas de fermeture. La règle par défaut consiste à redémarrer systématiquement les conteneurs. Vous pouvez également définir une règle permettant de redémarrer des conteneurs en cas d'échec, ou de ne jamais les redémarrer.
Console
gcloud
Utilisez l'indicateur
--container-restart-policy
pour spécifier les règles de redémarrage du conteneur :L'exemple suivant permet de lancer un conteneur avec une règle 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 définir une règle de redémarrage sur 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 appareil.
Console
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 le mode 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 fluxSTDIN
ouvert dans un conteneur. Si cette option n'est pas définie, les lectures deSTDIN
dans le conteneur renvoient toujoursEOF
.En plus d'attribuer un pseudo-TTY, il est nécessaire de garder le flux
STDIN
ouvert afin d'établir une interface système interactive dans le conteneur et de permettre à celui-ci de recevoir ses entrées standards à partir d'un pipeline.Console
gcloud
Ajoutez l'indicateur
--container-stdin
afin d'attribuer un tampon pourSTDIN
dans l'environnement d'exécution du conteneur. L'exemple suivant permet de démarrer un conteneur et de maintenir le fluxSTDIN
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. Utilisez l'indicateur--no-container-stdin
pour désactiver l'attribution d'un tampon pourSTDIN
.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
gcloud
Ajoutez l'indicateur
--container-tty
pour attribuer un pseudo-TTY. L'exemple suivant permet de démarrer 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 l'indicateur--container-tty
pour mettre à jour un conteneur sur une VM. Incluez l'indicateur--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
gcloud
Incluez l'indicateur
--container-command
pour ignorer la commandeENTRYPOINT
de l'image du conteneur. L'exemple suivant permet d'exécuter la commandeuptime
dans un conteneur busybox de manière à 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 l'indicateur
--clear-container-command
avec la commandeupdate-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 commandeCMD
par défaut de celui-ci.Console
gcloud
Ajoutez l'indicateur
--container-arg
pour transmettre des arguments à la commandeENTRYPOINT
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 de l'indicateur
--clear-container-args
avec la commandeupdate-container
pour supprimer tous les arguments de la déclaration de conteneur.Configurer les options du pilote de journaux
Si vous devez configurer les options du pilote de journaux, vous pouvez créer un script de démarrage de VM pour mettre à jour le fichier de configuration Docker avec les options de journalisation dont vous avez besoin. Ces options s'appliquent à tous les conteneurs qui s'exécutent sur la VM et qui ne spécifient pas d'options de pilote de journaux.
Par exemple, le script de démarrage suivant définit plusieurs options (y compris une option permettant de limiter la taille du journal du conteneur), puis redémarre Docker sur la VM :
cat <<EOF > /etc/docker/daemon.json { "live-restore": true, "storage-driver": "overlay2", "log-opts": { "max-size": "10m" } } EOF systemctl restart docker
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 sectionKEY
est répétée plusieurs fois.Console
gcloud
Ajoutez l'indicateur
--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
etOWNER
: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 de l'indicateur
--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 fichierenv.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 l'indicateur
--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éesMODE
etOWNER
: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
gcloud
Ajoutez l'indicateur
--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 de l'indicateur--remove-container-mounts
pour supprimer les montages de volumes avec les chemins d'accès de montage spécifiés. L'exemple suivant permet de supprimer un montage d'un chemin d'accès à l'hôte avecmount-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
gcloud
Ajoutez l'indicateur
--container-mount-tmpfs
pour installer un système de fichierstmpfs
vide dans un conteneur. L'exemple suivant permet d'installer un système de fichierstmpfs
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 montagestmpfs
d'un conteneur. Spécifiez l'indicateur--remove-container-mounts
pour supprimer un montagetmpfs
avec le chemin d'accès au montage spécifié lors de la mise à jour. L'exemple suivant supprime le montagetmpfs
avecmount-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
Console
gcloud
Exécutez la commande
gcloud compute instances create-with-container
ou la commandegcloud 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
etmy-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
associemy-data-disk
, que l'indicateur--create-disk
crée et associemy-scatch-disk
, et que l'indicateur--container-mount-disk
installe les disques associés au conteneur. Comme aucunmode
n'est spécifié pourmy-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 demy-data-disk
par le mode lecture/écriture et supprime le montage de disque avecmount-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. Compute Engine ne prend pas en charge l'indicateur de publication de port (
-p
). Il n'est pas nécessaire de le spécifier pour que le mappage fonctionne.Pour rendre les ports de conteneurs publics, 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 sont accessibles automatiquement, conformément aux règles de pare-feu.
Exemple : Publication du port 80 d'un conteneur NGINX
L'exemple suivant montre comment créer une instance de VM avec un conteneur NGINX et autoriser le trafic vers le port 80 du conteneur.
Étape suivante
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/11/21 (UTC).
-