Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Les bases de Docker

La leçon complète est à lire ici. Créez un compte gratuit pour la pratiquer dans un labo en direct.

Labo de conteneurs7 min de lecture6 commandes

Ce que tu vas faire

Un conteneur est un programme qui tourne dans sa propre petite boîte fermée, avec ses propres fichiers. Les vrais systèmes sont faits de plusieurs conteneurs qui travaillent ensemble. Quand l'un s'arrête, on commence par regarder ce qui tourne, lire ce qu'il a dit et jeter un œil chez ses voisins. Ton lab a trois conteneurs, et l'un d'eux ne démarre pas. Tu vas trouver pourquoi, corriger le problème et le relancer, avec seulement les quatre commandes docker que ce terminal autorise.

Avant de commencer

Remarque

Appuie sur Démarrer le lab dans la barre en haut de cette leçon et attends qu'il indique qu'il tourne. Les trois conteneurs s'appellent web, cache et worker, et docker ne parle que d'eux dans ce terminal. Chaque bouton Exécuter ci-dessous tape sa commande dans le terminal de ton lab, l'une après l'autre dans la même session. Pour les suivre, ou pour taper tes propres commandes, appuie sur Ouvrir le terminal (nouvel onglet) dans la barre.

1. Voir ce qui tourne et lire le journal

docker ps -a liste tous les conteneurs, même ceux qui sont arrêtés. Lis la colonne STATUS : web et cache indiquent Up et (healthy), et worker indique Exited (1), donc il s'est arrêté dès son démarrage. Un simple docker ps ne l'aurait pas montré du tout. Un conteneur arrêté garde son journal (le « log »), et la deuxième commande l'affiche : la première ligne commence par worker: cannot start et dit que son fichier de réglages n'a pas de ligne QUEUE_HOST.

Commande
docker ps -a

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Commande
docker logs worker

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

2. Regarder chez un voisin, corriger et relancer

Tu ne peux pas entrer dans un conteneur arrêté, mais web partage avec lui le dossier des réglages, un volume nommé. docker exec lance une commande à l'intérieur d'un conteneur qui tourne : la première affiche le fichier de réglages, quatre lignes qui finissent par POLL_SECONDS=5. La deuxième ajoute la ligne qui manque, en nommant le service qui garde la file d'attente, cache. (Pour avoir un shell à l'intérieur, tape docker exec -it web sh dans ton propre terminal.) Ensuite docker restart worker le redémarre et affiche son nom.

Commande
docker exec web cat /settings/worker.conf

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Commande
docker exec web sh -c "echo QUEUE_HOST=cache >> /settings/worker.conf"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Commande
docker restart worker

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

3. Vérifier, et voir ce qui reste

Maintenant worker indique Up, et pendant quelques secondes (health: starting) avant (healthy) : relance la commande si ça n'a pas encore changé. Si tu tapes docker logs worker dans ton propre terminal, le journal se termine maintenant par des lignes worker: finished job. Puis appuie sur Arrêter le lab dans la barre, puis sur Démarrer le lab de nouveau, et lance docker ps -a : le worker démarre tout de suite en bonne santé, parce que ta ligne est dans le volume nommé. Tout ce que tu aurais écrit dans un conteneur en dehors de /settings aurait disparu : c'est ainsi que se comportent les conteneurs, partout.

Commande
docker ps

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Pour les enseignants

Astuce

Cette leçon est un petit exemple de leçon travaillée dans un lab : les étapes et les boutons Exécuter sont la leçon, et le lab est la copie personnelle de chaque élève. Le lab compte trois services et un volume nommé, et rien ici ne se corrige tout seul : l'élève rend le résultat de docker ps -a avant et après la correction, la ligne du journal qui lui a dit ce qui n'allait pas, et une phrase sur ce qui survit à l'arrêt du lab. Copiez-la dans votre propre module et modifiez-la, ou construisez-en une de zéro avec le menu Lab du créateur de leçons.

À propos de ce labo et de sa source: Lab Docker : apprendre conteneurs, journaux et redémarrages en réparant un service en panne

Vous enseignez à une classe ? Proposez ces leçons à vos élèves avec correction et un labo pour chaque élève.