
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Publish your container image to Container Registry
/ 100
Docker est une plate-forme ouverte permettant de développer, de lancer et d'exécuter des applications. Avec cette solution, vous pouvez séparer les applications de votre infrastructure et traiter cette dernière comme une application gérée. Docker vous fait gagner du temps lors des phases de lancement, de test et de déploiement du code, et raccourcit le cycle entre la rédaction et l'exécution du code.
Pour ce faire, Docker combine des fonctionnalités de conteneurisation de noyau avec des workflows et des outils qui vous aident à gérer et à déployer vos applications.
Les conteneurs Docker peuvent être utilisés directement dans Kubernetes, ce qui permet de les exécuter facilement dans Kubernetes Engine. Après avoir découvert les principes de base de Docker, vous disposerez de toutes les compétences requises pour développer des applications Kubernetes et des applications conteneurisées.
Dans cet atelier, vous allez apprendre à :
Cet atelier s'adresse aux débutants. Il ne nécessite aucune connaissance particulière de Docker ni des conteneurs. Une connaissance préalable de Cloud Shell et de la ligne de commande est recommandée, mais pas indispensable.
Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.
Cet atelier pratique vous permet de suivre vous-même les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Nous vous fournissons des identifiants temporaires pour vous connecter à Google Cloud le temps de l'atelier.
Pour réaliser cet atelier :
Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, un pop-up s'affiche pour vous permettre de sélectionner un mode de paiement. Sur la gauche, vous trouverez le panneau Détails concernant l'atelier, qui contient les éléments suivants :
Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans la fenêtre de navigation privée si vous utilisez le navigateur Chrome).
L'atelier lance les ressources, puis ouvre la page Se connecter dans un nouvel onglet.
Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.
Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.
Vous trouverez également le nom d'utilisateur dans le panneau Détails concernant l'atelier.
Cliquez sur Suivant.
Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.
Vous trouverez également le mot de passe dans le panneau Détails concernant l'atelier.
Cliquez sur Suivant.
Accédez aux pages suivantes :
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.
Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Le résultat contient une ligne qui déclare YOUR_PROJECT_ID (VOTRE_ID_PROJET) pour cette session :
gcloud
est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.
Cliquez sur Autoriser.
Vous devez à présent obtenir le résultat suivant :
Résultat :
Résultat :
Exemple de résultat :
gcloud
, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.
(Résultat de la commande)
Ce conteneur simple affiche Hello from Docker!
sur votre écran. La commande en elle-même est assez simple, mais vous pouvez constater dans le résultat le nombre conséquent d'étapes effectuées. Le daemon Docker a recherché l'image "hello-world", ne l'a pas trouvée en local, l'a extraite d'un registre public appelé Docker Hub, a créé un conteneur à partir de cette image et a exécuté ce conteneur.
(Résultat de la commande)
Il s'agit de l'image extraite du registre public Docker Hub. L'ID de l'image se présente sous la forme d'un hachage SHA256 qui identifie l'image Docker provisionnée. Par défaut, le daemon Docker recherche une image dans le registre public lorsqu'il ne la trouve pas en local.
(Résultat de la commande)
Notez que lorsque vous exécutez à nouveau la commande, le daemon Docker trouve l'image dans votre registre local et exécute le conteneur à partir de cette image. Il n'a pas besoin d'extraire l'image de Docker Hub.
(Résultat de la commande)
Aucun conteneur n'est en cours d'exécution. Vous avez déjà quitté les conteneurs hello-world que vous avez précédemment exécutés.
docker ps -a
:(Résultat de la commande)
Vous obtenez l'ID du conteneur (Container ID
), un UUID généré par Docker pour identifier le conteneur, ainsi que d'autres métadonnées relatives à l'exécution. Les noms de conteneur (Names
) sont également générés de manière aléatoire, mais peuvent être définis grâce à la commande docker run --name [nom-conteneur] hello-world
.
Dans cette section, vous allez créer une image Docker basée sur une application de nœud simple.
test
et basculer dans ce dossier.Dockerfile
:Ce fichier indique au daemon Docker comment créer votre image.
"."
) dans le conteneur.Dockerfile
. Vous allez maintenant rédiger le code de l'application du nœud, puis créer l'image.
Il s'agit d'un serveur HTTP simple qui écoute le port 80 et renvoie "Hello World".
Maintenant, créez l'image.
"."
, qui désigne le répertoire actuel. Vous devez donc exécuter cette commande depuis le répertoire qui contient le fichier Dockerfile :L'exécution de cette commande peut prendre quelques minutes. Une fois terminée, le résultat doit se présenter comme suit :
L'option -t
permet de nommer une image et de lui ajouter un tag par le biais de la syntaxe nom:tag
. Ici, le nom de l'image est node-app
et le tag
0.1
. L'utilisation d'un tag est vivement recommandée lors de la création d'images Docker. Si vous ne définissez pas de tag, la valeur latest
sera attribuée par défaut aux images et il sera plus difficile de distinguer les images plus récentes des images plus anciennes. Notez également comment, pour chaque ligne du Dockerfile
ci-dessus, des couches de conteneur intermédiaires sont ajoutées au fur et à mesure que l'image se crée.
Le résultat doit se présenter comme suit :
Notez que node
désigne l'image de base et que node-app
désigne l'image que vous avez créée. Vous ne pouvez pas supprimer node
sans d'abord supprimer node-app
. La taille de l'image est relativement petite par rapport aux VM. D'autres versions de l'image du nœud telles que node:slim
et node:alpine
peuvent vous donner des images encore plus petites pour une meilleure portabilité. La réduction de la taille des conteneurs est abordée plus en détail dans la section "Sujets avancés". Toutes les versions du dépôt officiel sont précisées sur la page node.
(Résultat de la commande)
L'option --name
vous permet de nommer le conteneur si vous le souhaitez. L'option -p
demande à Docker de faire correspondre le port 4000 de l'hôte avec le port 80 du conteneur. Vous pouvez à présent accéder au serveur via l'adresse http://localhost:4000
. Sans mise en correspondance des ports, vous ne pourrez pas accéder au conteneur sur "localhost".
+
), puis testez le serveur :(Résultat de la commande)
Le conteneur s'exécute à condition que le terminal initial soit en cours d'exécution. Si vous souhaitez que le conteneur s'exécute en arrière-plan (sans être associé à la session du terminal), vous devez définir l'option -d
.
(Résultat de la commande)
docker ps
indique que le conteneur est en cours d'exécution. Pour consulter les journaux, exécutez la commande docker logs [id_conteneur]
.docker logs 17b
si l'ID du conteneur est 17bcaca6f....
(Résultat de la commande)
Maintenant, modifiez l'application.
app.js
en remplaçant "Hello World" par une autre chaîne :0.2
:(Résultat de la commande)
Notez qu'à l'étape 2, vous utilisez une couche de cache existante. À partir de l'étape 3, les couches sont modifiées, car vous avez effectué un changement dans app.js
.
(Résultat de la commande)
(Résultat de la commande)
(Résultat de la commande)
Maintenant que vous savez créer et exécuter des conteneurs, découvrez comment effectuer un débogage.
docker logs [id_conteneur]
. Pour suivre la sortie du journal au cours de l'exécution du conteneur, utilisez l'option -f
.(Résultat de la commande)
Vous pouvez parfois avoir besoin de démarrer une session bash interactive dans le conteneur en cours d'exécution.
docker exec
. Ouvrez un autre terminal (dans Cloud Shell, cliquez sur l'icône +), puis saisissez la commande suivante :Avec l'option -it
, vous pouvez interagir avec un conteneur en attribuant un "pseudo-tty" et en gardant "stdin" ouvert. Comme vous pouvez le constater, bash a été exécuté dans le répertoire WORKDIR
(/app) indiqué dans le fichier Dockerfile
. Vous disposez maintenant d'une session de shell interactive dans le conteneur à déboguer.
(Résultat de la commande)
(Résultat de la commande)
(Résultat de la commande)
--format
pour examiner des champs spécifiques du JSON affiché. Exemple :(Exemple de résultat)
Consultez les documentations Docker suivantes pour en savoir plus sur le débogage :
Vous allez à présent transférer votre image vers Google Artifact Registry. Vous supprimerez ensuite l'ensemble des conteneurs et des images pour simuler un nouvel environnement, puis vous extrairez et exécuterez vos conteneurs. Vous pourrez ainsi constater la portabilité des conteneurs Docker.
Pour transférer des images vers votre registre privé hébergé par Artifact Registry, vous devez leur ajouter un tag correspondant au nom du registre. Le format est <dépôt-régional>-docker.pkg.dev/mon-projet/mon-dépôt/mon-image
.
Vous devez créer un dépôt pour pouvoir y transférer des images. Le transfert d'une image ne peut pas déclencher la création d'un dépôt et le compte de service Cloud Build ne dispose pas des autorisations nécessaires pour créer des dépôts.
Dans le menu de navigation, sous "CI/CD", accédez à Artifact Registry > Dépôts.
Cliquez sur l'icône + CRÉER DÉPÔT à côté des dépôts.
Indiquez my-repository
comme nom de dépôt.
Sélectionnez Docker comme format.
Sous "Type d'emplacement", sélectionnez Région, puis l'emplacement :
Cliquez sur Créer.
Avant de pouvoir transférer ou extraire des images, vous devez configurer Docker afin qu'il se serve de la Google Cloud CLI pour authentifier les requêtes envoyées à Artifact Registry.
Y
quand vous y êtes invité.La commande met à jour votre configuration Docker. Vous pouvez désormais vous connecter à Artifact Registry dans votre projet Google Cloud pour transférer et extraire des images.
node-app:0.2
.(Résultat de la commande)
Résultat de la commande (celui que vous obtiendrez sera peut-être différent) :
Une fois le transfert terminé, dans le menu de navigation, sous "CI/CD", accédez à Artifact Registry > Dépôts.
Cliquez sur my-repository. Le conteneur Docker node-app
créé devrait s'afficher :
Vous pourriez démarrer une nouvelle VM, vous connecter en SSH à cette VM et installer gcloud. Pour plus de simplicité, vous allez juste supprimer l'ensemble des conteneurs et des images pour simuler un nouvel environnement.
Vous devez supprimer les images enfants (de node:lts
) avant de supprimer l'image du nœud.
(Résultat de la commande)
À ce stade, vous devriez disposer d'un pseudo-nouvel environnement.
(Résultat de la commande)
Cliquez sur Vérifier ma progression pour valider la tâche exécutée. Si l'image de conteneur a bien été publiée vers Artifact Registry, une note d'évaluation apparaît.
La portabilité des conteneurs est mise en avant ici. Tant que Docker est installé sur l'hôte (sur site ou sur une VM), il peut extraire des images de registres publics ou privés et exécuter des conteneurs basés sur une de ces images. Il n'est nécessaire d'installer aucune dépendance d'application sur l'hôte, sauf pour Docker.
Félicitations ! Au cours de cet atelier, vous avez réalisé plusieurs activités pratiques comme exécuter des conteneurs basés sur des images publiques à partir de Docker Hub. Vous avez également créé vos propres images de conteneurs, que vous avez transférées vers Google Artifact Registry. Cet atelier vous a aussi doté des compétences nécessaires pour déboguer efficacement des conteneurs en cours d'exécution. Enfin, vous vous êtes familiarisé avec l'exécution de conteneurs basés sur des images extraites de Google Artifact Registry, ce qui vous a permis d'améliorer vos connaissances et vos compétences sur Docker.
Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.
Dernière mise à jour du manuel : 29 février 2024
Dernier test de l'atelier : 29 février 2024
Copyright 2025 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.
Ce contenu n'est pas disponible pour le moment
Nous vous préviendrons par e-mail lorsqu'il sera disponible
Parfait !
Nous vous contacterons par e-mail s'il devient disponible
One lab at a time
Confirm to end all existing labs and start this one