0.3 · Architecture : image, conteneur, registre, daemon

Fondamentaux

0.3Architecture : image, conteneur, registre, daemon

Objectif : Nommer les 5 acteurs de Docker et expliquer leur rôle sans jargon.
Temps estimé : 10 min · lecture autonome · Si vous n'avez que 5 min : lisez « L'essentiel en 30s » + le schéma.

L'essentiel en 30 secondes

  • Le client ordonne, le daemon exécute : vous ne parlez qu'au client (docker), le moteur de fond fait le travail.
  • L'image est le moule immuable, le conteneur la pièce vivante : une image → N conteneurs indépendants, chacun avec sa couche inscriptible.
  • Le registre stocke les images versionnées par tags : pull télécharge, push publie — toujours un tag explicite, jamais latest en production.

Mini-cas filé — Idir fait tourner trois serveurs web identiques à Alger

Idir, devops junior à Alger, doit tester la répartition de charge : au lieu de réinstaller trois fois nginx, il applique l'architecture. Il télécharge UNE fois l'image avec docker pull nginx:1.27 (registre Docker Hub, tag explicite), puis lance trois conteneurs nommés web1, web2, web3 depuis cette même image. Avec docker ps, il voit la même image et trois vies indépendantes. Il supprime web2 : l'image et les autres conteneurs survivent — la preuve vivante que le moule ne change jamais quand une pièce disparaît.

Cas autonome de cette section : il revient dans le cours, le schéma, le script et le défi 48h de la section 0.3.

1. Les cinq acteurs

Le client (docker) envoie des ordres au daemon (le moteur de fond). Le daemon construit des images, les stocke localement, en télécharge depuis un registre (Docker Hub) et les exécute en conteneurs. Vous ne parlez qu'au client ; le daemon fait le travail. Idir voit le client comme la télécommande et le daemon comme le serveur.

2. Image vs conteneur : le moule et la pièce

L'image est un modèle immuable (empilement de couches en lecture seule). Le conteneur est une instance vivante de ce modèle, avec une fine couche inscriptible par-dessus. On peut lancer dix conteneurs de la même image sans la dupliquer : chacun vit sa vie, l'image ne change jamais. Idir retient : supprimer un conteneur ne touche ni l'image ni ses voisins.

3. Le registre, bibliothèque mondiale

Le registre stocke les images versionnées par tags (nginx:1.27, postgres:16). docker pull télécharge, docker push publie. Docker Hub est le registre public par défaut ; les entreprises ajoutent souvent un registre privé (GHCR, Harbor). Idir précise toujours son tag : latest ne fige aucune version.

Erreur d'interprétation fréquente : « Image et conteneur, c'est pareil : je supprime l'image pour arrêter un conteneur, je reste en latest, et pull est toujours obligatoire ». Non, triple erreur. L'image est le moule immuable, le conteneur la pièce vivante : supprimer le mauvais objet casse le raisonnement (on arrête un conteneur avec stop/rm, pas en supprimant l'image). latest ne fige aucune version : on précise toujours le tag. Et pull n'est pas obligatoire : run télécharge seul l'image manquante.
Les acteurs Docker Le client ordonne, le daemon exécute, le registre stocke les images. Client docker LatélécommandeDaemon (moteur) Construitet exécuteRegistre (images) Bibliothèqueversionnée
Le client ordonne, le daemon exécute, le registre stocke les images.
Version texte du schéma (SEO / lecteurs d'écran / traduction) : 1) Idir, devops junior à Alger, nomme les cinq acteurs : il parle au client (docker), qui transmet au daemon — le moteur qui construit les images, les stocke, les télécharge depuis le registre et les exécute en conteneurs. 2) Il distingue le moule de la pièce : l'image est immuable (couches en lecture seule), le conteneur est une instance vivante avec sa couche inscriptible — dix conteneurs d'une même image vivent chacun leur vie. 3) Il puise au registre (Docker Hub par défaut, GHCR ou Harbor en privé) des images versionnées par tags (nginx:1.27, postgres:16) : pull pour télécharger, push pour publier, run qui télécharge seul si besoin. Leçon : une image téléchargée une fois, N conteneurs indépendants — et supprimer un conteneur n'efface ni l'image ni les autres.

🔎 Exemple concret — 🔎 Exemple concret — Trois serveurs web identiques

Idir lance trois nginx indépendants depuis une seule image téléchargée une fois.

docker pull nginx:1.27
docker run -d --name web1 nginx:1.27
docker run -d --name web2 nginx:1.27
docker run -d --name web3 nginx:1.27

Lecture : une seule image téléchargée, trois conteneurs indépendants.

Leçon : supprimez web2 : l'image et les autres conteneurs survivent.

Vocabulaire de la section

Client
La CLI docker : elle envoie des ordres, ne les exécute pas.

Exemple simple : Idir tape docker pull nginx:1.27 : le client transmet au daemon.

Ce que ce n'est pas : le moteur qui exécute les conteneurs.

Réflexe : le client ordonne, le daemon exécute.

Daemon
Le moteur dockerd qui construit et exécute vraiment.

Exemple simple : Idir sait que ses trois web tournent grâce au daemon.

Ce que ce n'est pas : la commande tapée au clavier.

Réflexe : rien ne démarre si le daemon est arrêté.

Image
Modèle immuable en couches, identifié par nom:tag.

Exemple simple : Idir fige nginx:1.27 : trois conteneurs, une seule image intacte.

Ce que ce n'est pas : un conteneur vivant et modifiable.

Réflexe : toujours nom:tag explicite.

Conteneur
Instance vivante d'une image, avec sa couche inscriptible.

Exemple simple : Idir supprime web2 : web1 et web3 continuent, l'image survit.

Ce que ce n'est pas : le moule stocké au registre.

Réflexe : --name pour s'y retrouver entre voisins.

Tag
L'étiquette de version d'une image (1.27, 16, latest).

Exemple simple : Idir choisit nginx:1.27 plutôt que latest pour figer sa version.

Ce que ce n'est pas : un nom de conteneur.

Réflexe : latest en test seulement, jamais en production.

En pratique — En pratique — Voir les acteurs en action

  1. Téléchargez nginx:1.27 avec pull et listez vos images, comme Idir.
  2. Lancez deux conteneurs de cette image avec des --name différents.
  3. Listez-les avec docker ps : même image, deux vies.
  4. Supprimez-en un : vérifiez que l'image et l'autre survivent.
Vous distinguez image, conteneur, registre, client et daemon du premier coup d'œil.

Script pas-à-pas — une image, trois conteneurs comme Idir (5 min)

1) Tapez docker pull nginx:1.27 puis docker images : repérez l'image téléchargée. 2) Tapez docker run -d --name web1 nginx:1.27 puis docker run -d --name web2 nginx:1.27 : deux vies depuis le même moule. 3) Tapez docker ps : vérifiez même image, deux conteneurs. 4) Tapez docker rm -f web2 puis docker ps et docker images : comme Idir, constatez que web1 et l'image survivent.

run télécharge seul l'image manquante : le pull explicite sert ici à voir le registre en action.

Modèle copier-coller — mon mémo des 5 acteurs

docker pull nginx:1.27        # registre → local (tag explicite)
docker images                 # stock local du daemon
docker run -d --name web1 nginx:1.27   # moule → pièce vivante
docker ps                     # même image, vies indépendantes
docker rm -f web2            # supprimer une pièce, garder le moule
# Client = télécommande / Daemon = serveur / Registre = bibliothèque.

Triple web

Idir teste la répartition : web1, web2, web3 depuis nginx:1.27 — une image, trois vies.

Base versionnée

Idir fige postgres:16 pour ses essais : même tag partout, comportement reproductible.

Registre privé

En entreprise, Idir ajoutera GHCR ou Harbor au Hub public : même pull, autre bibliothèque.

Conteneur arrêté

Un conteneur arrêté occupe du disque (couche + logs) sans consommer CPU/RAM : Idir nettoie avec rm et prune.

✓ Bonnes pratiques

  • Précisez toujours un tag de version explicite.
  • Nommez ses conteneurs (--name) pour s'y retrouver.
  • Voyez le daemon comme le « serveur », le client comme la « télécommande ».

✗ Pièges fréquents

  • Confondre image et conteneur (supprimer l'un en voulant l'autre).
  • Utiliser latest en pensant figer une version.
  • Croire que pull est obligatoire (run le fait seul).

Points clés à retenir

  • Le client ordonne, le daemon exécute.
  • L'image est immuable, le conteneur est vivant.
  • Le registre stocke les images versionnées.
  • Une image → N conteneurs indépendants.

Défi 48h — appliquez demain

Rejouez le trio d'Idir : pull de nginx:1.27, deux conteneurs nommés, ps pour voir les deux vies — puis supprimez-en un et prouvez que l'image et l'autre survivent.

Checklist sortie de section
  • Je peux citer les 5 acteurs et le rôle de chacun sans jargon.
  • J'ai lancé N conteneurs depuis une seule image taguée.
  • Je sais ce qui survit quand je supprime un conteneur (image + voisins).
Auto-évaluation 1-5 : est-ce que je distingue moule (image) et pièce (conteneur) ?Auto-évaluation 1-5 : ai-je prouvé l'indépendance des conteneurs par ps et rm ?

Questions fréquentes

Où sont stockées mes images ?

En local, dans l'espace du daemon (docker images). La copie de référence vit dans le registre distant tant qu'on ne l'a pas pull — Idir vérifie en local après chaque pull.

Un conteneur arrêté consomme-t-il des ressources ?

Presque pas de CPU/RAM, mais il occupe du disque (sa couche + ses logs). On nettoie avec rm et prune — Idir purge les coquilles au lieu de les accumuler.

Vérifiez votre compréhension

Quelle image décrit le mieux le couple image / conteneur ?

Ressources supplémentaires (optionnel, pour aller plus loin)

Examen du niveau 0Questions inédites et durcies pour valider vos acquis