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

Lancer une application dans un conteneur (Docker)

Après cette leçon: Je peux lancer une application dans un conteneur et regarder ce qu’il y a dedans.

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

Chez moi, ça marchait

Une développeuse crée une petite boutique en ligne sur son portable. Tout marche. Sur le serveur de l’entreprise, l’application plante : il y a une ancienne version d’une bibliothèque.

Personne n’a commis de faute. Les deux machines étaient simplement différentes. Un conteneur emporte l’application avec tout ce dont elle a besoin. Elle tourne alors partout de la même façon.

À la fin de cette leçon

Remarque

Je peux lancer une application dans un conteneur et regarder ce qu’il y a dedans.

Mots-clés

MotCe que ça veut direExemple
Imageun paquet en lecture seule : un programme et ce dont il a besoin
Conteneurune copie en marche d’une image, avec ses fichiers et ses processus
Étiquette (tag)la partie après les deux-points, qui nomme une version de l’image1.27-alpine
Portune porte numérotée où un programme attend ses visiteurs80
Volumeun dossier gardé hors du conteneur, pour qu’il survive

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

L’image est la recette, le conteneur le plat

Une image est un paquet. Elle contient un programme, ses fichiers et une note qui dit comment le démarrer. Une image ne change jamais.

Un conteneur est ce qu’on obtient en démarrant une image. On peut démarrer beaucoup de conteneurs depuis une seule image, comme on fait beaucoup de gâteaux avec une recette.

Votre labo a trois conteneurs. Lancez la commande pour les lister.

Lister tous les conteneurs

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.

Exemple travaillé : lire une ligne

ColonneCe qu’elle ditDans votre labo
IMAGEl’image dont le conteneur est partiweb utilise nginx, cache utilise valkey
STATUSen marche, arrêté ou en difficultéUp, Exited ou healthy
PORTSles portes où le programme attend80/tcp pour web
NAMESle nom à taper dans les autres commandesweb, cache, worker

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

Un conteneur a sa propre vue

Dans un conteneur, le programme voit ses fichiers et sa liste de processus. Il ne voit pas les fichiers des autres conteneurs.

docker exec lance une commande dans un conteneur qui tourne. Les trois commandes suivantes regardent web, le conteneur qui sert une page web.

Lister les processus dans web

Commande
docker exec web 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.

Demander la version du serveur

Commande
docker exec web nginx -v

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.

Lister le dossier des pages servies

Commande
docker exec web ls /usr/share/nginx/html

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.

Une erreur fréquente

Attention

On croit souvent qu’un conteneur est une petite machine virtuelle. Ce n’est pas le cas. Un conteneur est un processus ordinaire de la machine hôte, qui voit ses propres fichiers. Il partage le noyau de l’hôte. Choisissez une machine virtuelle quand il faut un autre système.

De quel système viennent les fichiers de web ?

Commande
docker exec web head -n 1 /etc/os-release

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.

Demander à web son noyau

Commande
docker exec web uname -r

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.

Poser la même question à votre terminal

Commande
uname -r

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.

Les ports laissent entrer, les volumes gardent

Un serveur web attend sur le port 80. Les autres conteneurs du réseau du labo l’atteignent par son nom, web.

Les fichiers propres d’un conteneur ne durent que ce que dure le conteneur. Si on le remplace, ou si on arrête le labo, ils disparaissent.

Un volume est un dossier gardé hors du conteneur. Le labo en a un dans /settings.

Visiter le port web par son nom

Commande
curl -s -o /dev/null -w "%{http_code}\n" http://web

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.

Créer un fichier dans le dossier du conteneur

Commande
docker exec web touch /tmp/memo.txt

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.

Le voir apparaître

Commande
docker exec web ls /tmp

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.

Regarder le volume sans le changer

Commande
docker exec web ls /settings

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 aller plus loin

Comptez les lignes nginx: worker process affichées par docker exec web ps. Lancez ensuite docker exec web nproc, qui affiche le nombre de processeurs que voit le conteneur.

Comparez les deux nombres. Expliquez pourquoi nginx lance peut-être autant de workers, et à qui appartiennent ces processeurs.

À 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.