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

Comprendre les conteneurs avec Docker

Après cette leçon: Je peux trouver pourquoi un conteneur s’est arrêté.

Leçon de 50 min3 commandesLab Docker : apprendre conteneurs, journaux et redémarrages en réparant un service en panne

Une appli dans une boîte fermée

Un conteneur est une application rangée dans une boîte fermée, avec tout ce dont elle a besoin pour tourner. Grâce à lui, la même application marche sur ton ordinateur, sur celui du lycée ou sur un serveur lointain.

Le serveur de ton jeu en ligne préféré fait sans doute tourner ses programmes dans des conteneurs. Quand l’un d’eux s’arrête, quelqu’un doit trouver pourquoi, vite.

À la fin de cette leçon

Remarque

Je peux trouver pourquoi un conteneur s’est arrêté.

Mots clés

MotCe que ça veut direExemple
Imagele modèle figé d’une application, prêt à démarrer
Conteneurune image en train de tourner, dans sa propre boîte
Journalles messages qu’un programme écrit pendant qu’il tournedocker logs worker
Volumeun dossier gardé même quand le conteneur disparaît
Machine virtuelleun faux ordinateur complet qui tourne dans un vrai
Dockerl’outil qui lance et surveille des conteneurs

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une image est une recette, pas un plat

Une image est un paquet figé : le programme et tout ce qu’il lui faut. On ne la modifie pas.

Quand on la démarre, on obtient un conteneur. Tu peux démarrer dix conteneurs depuis une seule image, comme dix gâteaux avec une seule recette.

Un conteneur est plus léger qu’une machine virtuelle

Une machine virtuelle contient un système d’exploitation complet. Elle pèse lourd et met du temps à démarrer.

Un conteneur partage le système de la machine qui l’héberge. Il ne contient que l’application et ses fichiers. C’est pourquoi on en lance des dizaines sur un même serveur.

Exemple : un site web de deux façons

CritèreConteneurMachine virtuelle
Ce qu’elle contientLe site et ses fichiersUn système complet, puis le site
DémarrageQuelques secondesUne ou deux minutes
Place sur le disqueQuelques dizaines de MoPlusieurs Go
Séparation des applisBonneTotale

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

`docker ps -a` liste tous les conteneurs

Dans ton lab, trois conteneurs t’attendent : web sert une page, cache garde une file de tâches et worker les traite. Démarre le lab, puis attends que web et cache soient prêts.

docker ps -a liste tous les conteneurs, même arrêtés. Sans -a, seuls ceux qui tournent apparaissent.

Liste les conteneurs du lab

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.

Lire la colonne STATUS

Regarde la colonne STATUS. web et cache disent Up puis (healthy) : ils tournent et se jugent en bonne santé.

worker dit Exited (1). Il s’est arrêté juste après son démarrage. Le nombre entre parenthèses est son code de sortie, et 1 veut dire « une erreur ».

Le journal dit pourquoi le conteneur s’est arrêté

Un programme qui s’arrête écrit presque toujours une raison avant de partir. Cette raison est dans son journal. Un conteneur arrêté garde son journal.

docker logs worker affiche celui du worker. Puis docker exec lance une commande à l’intérieur d’un conteneur qui tourne : ici, on lit le fichier de réglages dans web.

Lis le journal du worker

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.

Lis le fichier de réglages

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.

Ce que disent le journal et le fichier

La première ligne du journal commence par worker: cannot start. Elle dit qu’il manque une ligne QUEUE_HOST dans le fichier de réglages.

Le fichier, lui, ne contient que quatre lignes, dont la dernière est POLL_SECONDS=5. Aucune ne nomme la file de tâches. Le journal avait donc raison.

Une erreur fréquente

Attention

Beaucoup pensent qu’un conteneur arrêté a disparu. Il existe toujours, avec son journal. docker ps seul ne montre que ceux qui tournent : utilise docker ps -a pour voir aussi les arrêtés.

Ce qui disparaît, ce qui reste

Un fichier écrit dans un conteneur survit à un redémarrage du conteneur. Il disparaît quand le conteneur est supprimé, ici quand le lab s’arrête.

Un volume est un dossier gardé à part. Dans ton lab, /settings est un volume : ce que tu y écris reste. Voilà pourquoi les réglages importants vivent dans un volume.

Pour aller plus loin : les conteneurs malades

Un conteneur peut tourner et être malade. Son statut dit alors Up 3 minutes (unhealthy).

Ajoute à ta fonction bilan un compteur "malades" pour les conteneurs en marche dont le statut contient unhealthy. Teste-le avec une ligne que tu écris toi-même.

À 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 ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.