Observer Docker une première fois
Voir réellement une image, un container et leur cycle de vie.
Dans ce chapitre : 5 étapes et 15 preuves de validation.
Étape 14 — Lancer le container de démonstration
Section intitulée « Étape 14 — Lancer le container de démonstration »Objectif. Tu observeras tout le trajet Docker avec une image sans rapport avec Inception.
État du projet avant cette étape. Engine, Buildx et Compose fonctionnent. Aucun objet de projet n’existe.
Comprendre le changement
Section intitulée « Comprendre le changement »docker run demande une image nommée hello-world. Si elle manque, le daemon la télécharge, crée un container, lance son processus puis garde le container arrêté pour inspection.
Faire une seule chose
Section intitulée « Faire une seule chose »Lance ce test unique. L’image hello-world sert seulement à apprendre Docker ; elle ne fera jamais partie des services Inception.
docker run --name hello-lab hello-worldCe que fait chaque partie
- docker run crée puis démarre un container.
- --name hello-lab lui donne un nom facile à retrouver.
- hello-world est le nom de l’image de diagnostic.
Le terminal affiche Hello from Docker! puis rend la main.
Si cela échoue
Un conflit de nom signifie que le test existe déjà : inspecte-le au lieu de multiplier les containers.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Pourquoi une image reste-t-elle après la suppression d’un container ?
L’image est le modèle ; le container n’est qu’une instance créée depuis ce modèle.
Étape 15 — Voir séparément l’image et le container
Section intitulée « Étape 15 — Voir séparément l’image et le container »Objectif. Tu rendras la différence image/container visible dans deux commandes.
État du projet avant cette étape. hello-lab a terminé, mais Docker conserve son image et son container arrêté.
Comprendre le changement
Section intitulée « Comprendre le changement »docker image ls liste les modèles disponibles. docker container ls -a liste les instances, y compris celles qui sont arrêtées. Un même nom d’image et un nom de container ne désignent pas le même objet.
Faire une seule chose
Section intitulée « Faire une seule chose »Affiche les deux listes et retrouve hello-world dans la première, hello-lab dans la seconde.
docker image ls hello-world
docker container ls -a --filter name=hello-labCe que fait chaque partie
- docker image ls filtre les images par nom.
- docker container ls -a inclut les containers arrêtés.
- --filter limite la sortie au test.
Une ligne IMAGE hello-world et une ligne CONTAINER hello-lab avec le statut Exited apparaissent.
Si cela échoue
Sans -a, le container terminé est invisible : ce n’est pas une suppression.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Pourquoi une image reste-t-elle après la suppression d’un container ?
L’image est le modèle ; le container n’est qu’une instance créée depuis ce modèle.
Étape 16 — Créer une deuxième instance de la même image
Section intitulée « Étape 16 — Créer une deuxième instance de la même image »Objectif. Tu prouveras qu’une image peut produire plusieurs containers.
État du projet avant cette étape. Une image et un container existent.
Comprendre le changement
Section intitulée « Comprendre le changement »Relancer la même image ne la reconstruit pas. Docker crée une nouvelle instance indépendante avec un autre identifiant et un autre nom.
Faire une seule chose
Section intitulée « Faire une seule chose »Crée hello-lab-2 puis liste les deux containers. Observe qu’une seule image suffit.
docker run --name hello-lab-2 hello-world
docker container ls -a --filter ancestor=hello-world
docker image ls hello-worldCe que fait chaque partie
- Le deuxième run crée une autre instance.
- --filter ancestor sélectionne les containers issus de l’image.
- image ls confirme que l’image n’a pas été dupliquée.
Deux containers arrêtés sont listés, mais une seule image hello-world.
Si cela échoue
Si hello-lab-2 existe déjà, ne le recrée pas ; passe directement aux listes.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Pourquoi une image reste-t-elle après la suppression d’un container ?
L’image est le modèle ; le container n’est qu’une instance créée depuis ce modèle.
Étape 17 — Supprimer les instances, conserver le modèle
Section intitulée « Étape 17 — Supprimer les instances, conserver le modèle »Objectif. Tu vérifieras qu’effacer un container n’efface pas automatiquement son image.
État du projet avant cette étape. Deux containers arrêtés utilisent une même image.
Comprendre le changement
Section intitulée « Comprendre le changement »docker rm supprime les instances indiquées. L’image reste disponible jusqu’à une suppression explicite avec docker image rm.
Faire une seule chose
Section intitulée « Faire une seule chose »Supprime les deux containers puis compare de nouveau les listes.
docker rm hello-lab hello-lab-2
docker container ls -a --filter ancestor=hello-world
docker image ls hello-worldCe que fait chaque partie
- docker rm supprime uniquement les deux containers arrêtés.
- La liste container doit devenir vide pour ce filtre.
- La dernière commande prouve que l’image reste.
Aucun container hello-world n’est listé, tandis que l’image existe encore.
Si cela échoue
Un container Running doit être arrêté avant rm ; ici les deux diagnostics sont déjà Exited.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Pourquoi une image reste-t-elle après la suppression d’un container ?
L’image est le modèle ; le container n’est qu’une instance créée depuis ce modèle.
Étape 18 — Comprendre ce que le Dockerfile va changer
Section intitulée « Étape 18 — Comprendre ce que le Dockerfile va changer »Objectif. Tu passeras d’une image téléchargée à une image construite par toi.
État du projet avant cette étape. Tu as utilisé une image existante uniquement pour observer Docker.
Comprendre le changement
Section intitulée « Comprendre le changement »Inception interdit les images de service prêtes. Pour MariaDB, WordPress et NGINX, un Dockerfile partira d’une base Debian ou Alpine autorisée puis installera et configurera le service.
Faire une seule chose
Section intitulée « Faire une seule chose »Formule la différence : docker pull récupère une image ; docker build exécute une recette locale. La prochaine image sera construite, pas téléchargée prête.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Pourquoi une image reste-t-elle après la suppression d’un container ?
L’image est le modèle ; le container n’est qu’une instance créée depuis ce modèle.