0.4 · Cycle de vie : run, ps, stop, rm, logs

Fondamentaux

0.4Cycle de vie : run, ps, stop, rm, logs

Objectif : Maîtriser le cycle de vie complet d'un conteneur au quotidien.
Temps estimé : 12 min · lecture autonome · Si vous n'avez que 5 min : lisez « L'essentiel en 30s » + le schéma.

L'essentiel en 30 secondes

  • run crée ET démarre (pull + create + start) : -d pour l'arrière-plan, --rm pour les essais jetables auto-supprimés.
  • ps voit, logs lit, exec entre : ps les vivants (ps -a tous), logs -f suit les journaux, exec -it ouvre un shell dedans.
  • stop arrête poliment, rm supprime la coquille : on préfère stop à kill, et on purge les exited avec prune.

Mini-cas filé — Idir fait vivre une démo propre de bout en bout

Idir, devops junior à Alger, doit montrer nginx à son équipe : au lieu de laisser des fantômes en -d, il joue le cycle complet. Il lance avec docker run -d --name demo nginx:1.27, affiche avec docker ps, lit avec docker logs demo, entre avec docker exec -it demo sh puis ressort avec exit, arrête avec docker stop demo, supprime avec docker rm demo, et vérifie avec docker ps -a que tout a disparu. Six commandes, zéro conteneur exited oublié : 80 % de son usage quotidien est couvert.

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

1. Naître : run = pull + create + start

docker run -d --name demo nginx:1.27 fait trois choses : télécharger l'image si besoin, créer le conteneur, le démarrer en arrière-plan (-d). Sans -d, le terminal reste attaché ; avec --rm, le conteneur s'auto-supprime à l'arrêt (parfait pour les essais). Idir nomme toujours (--name) pour viser juste ensuite.

2. Vivre : voir, suivre, entrer

docker ps liste les vivants, ps -a ajoute les morts. docker logs -f demo suit les journaux, docker exec -it demo sh ouvre un shell dans le conteneur vivant. Retenez : logs pour voir, exec pour entrer. Idir lit d'abord les logs avant d'entrer : la plupart des diagnostics s'arrêtent là.

3. Mourir proprement : stop puis rm

docker stop demo envoie un arrêt poli (SIGTERM puis SIGKILL), docker rm demo supprime la coquille. docker rm -f force les deux d'un coup. Les conteneurs arrêtés non supprimés encombrent : un docker container prune régulier fait le ménage. Idir préfère stop à kill pour laisser les applis finir proprement.

Erreur d'interprétation fréquente : « Je ferme le terminal pour arrêter, je laisse les exited s'empiler, et rm supprime aussi l'image ». Non, triple erreur. Fermer le terminal laisse un fantôme en -d : on arrête avec stop, on supprime avec rm, on vérifie avec ps -a. Les dizaines de conteneurs exited encombrent le disque : --rm pour les essais, prune régulier sinon. Et rm vise le conteneur, pas l'image (rmi) : confondre les deux efface le mauvais objet.
Cycle de vie Créer et démarrer, observer, arrêter puis supprimer : le cycle complet. run (créer+démarrer) Naîtreavec -d et --nameps / logs / exec Voir,lire, entrerstop puis rm Mourirproprement
Créer et démarrer, observer, arrêter puis supprimer : le cycle complet.
Version texte du schéma (SEO / lecteurs d'écran / traduction) : 1) Idir, devops junior à Alger, fait naître son conteneur : docker run -d --name demo nginx:1.27 télécharge l'image si besoin, crée puis démarre en arrière-plan — avec --rm pour les essais jetables qui s'auto-suppriment. 2) Il le fait vivre : docker ps liste les vivants (ps -a ajoute les morts), docker logs -f demo suit les journaux, docker exec -it demo sh ouvre un shell dedans — logs pour voir, exec pour entrer. 3) Il le fait mourir proprement : docker stop demo (arrêt poli SIGTERM puis SIGKILL) puis docker rm demo (suppression de la coquille), rm -f pour forcer, et docker container prune contre l'accumulation d'exited. Leçon : ce cycle en six commandes couvre 80 % du quotidien.

🔎 Exemple concret — 🔎 Exemple concret — Une démo propre de bout en bout

Idir enchaîne le cycle complet sur demo, puis vérifie qu'il ne reste rien.

docker run -d --name demo nginx:1.27
docker ps
docker logs demo
docker stop demo
docker rm demo
docker ps -a

Lecture : on voit le conteneur vivant, on lit ses logs, on l'arrête, on le supprime, on vérifie qu'il a disparu.

Leçon : ce cycle en six commandes est 80 % de votre usage quotidien.

Vocabulaire de la section

run
Créer + démarrer un conteneur depuis une image.

Exemple simple : Idir tape docker run -d --name demo nginx:1.27 : pull + create + start.

Ce que ce n'est pas : la simple liste des conteneurs.

Réflexe : toujours --name pour viser juste ensuite.

ps
Lister les conteneurs (vivants, ou tous avec -a).

Exemple simple : Idir voit demo vivant avec ps, puis disparu avec ps -a après rm.

Ce que ce n'est pas : la liste des images.

Réflexe : perdu ? ps -a montre aussi les morts.

exec
Exécuter une commande dans un conteneur vivant.

Exemple simple : Idir ouvre un shell avec docker exec -it demo sh puis exit.

Ce que ce n'est pas : le démarrage d'un nouveau conteneur.

Réflexe : diagnostic : logs d'abord, exec ensuite.

stop / rm
Arrêter poliment / supprimer la coquille.

Exemple simple : Idir stoppe demo (SIGTERM) puis supprime sa coquille avec rm.

Ce que ce n'est pas : la suppression de l'image (rmi).

Réflexe : stop avant rm, jamais de fermeture de terminal.

--rm
Supprimer automatiquement le conteneur à son arrêt.

Exemple simple : Idir l'ajoute à tous ses essais jetables : zéro fantôme exited.

Ce que ce n'est pas : le détachement en arrière-plan (-d).

Réflexe : essai jetable → --rm systématique.

En pratique — En pratique — Faire vivre un conteneur

  1. Lancez un nginx nommé avec -d, comme Idir (docker run -d --name demo nginx:1.27).
  2. Affichez-le (ps), lisez ses logs.
  3. Entrez dedans avec exec -it … sh, puis sortez (exit).
  4. Arrêtez-le, supprimez-le, vérifiez avec ps -a.
Le cycle run → ps → logs → stop → rm n'a plus aucun secret.

Script pas-à-pas — le cycle demo d'Idir en 6 commandes (5 min)

1) Tapez docker run -d --name demo nginx:1.27 : naissance en arrière-plan. 2) Tapez docker ps puis docker logs demo : le vivant et ses journaux. 3) Tapez docker exec -it demo sh, regardez, puis tapez exit : entrer et ressortir. 4) Tapez docker stop demo puis docker rm demo : arrêt poli puis suppression. 5) Tapez docker ps -a : comme Idir, vérifiez que demo a disparu — sinon, docker container prune pour purger les exited.

Pour un simple essai jetable, ajoutez --rm au run : aucune étape 4 à oublier.

Modèle copier-coller — mon mémo du cycle de vie

docker run -d --name demo nginx:1.27   # naître (pull + create + start)
docker ps                              # voir les vivants (ps -a = tous)
docker logs demo                       # lire (logs -f = suivre)
docker exec -it demo sh                # entrer (exit = sortir)
docker stop demo                       # arrêt poli (SIGTERM puis SIGKILL)
docker rm demo                         # supprimer la coquille
docker ps -a                           # vérifier la disparition

Essai jetable

Idir teste une image inconnue avec --rm : le conteneur s'auto-supprime à l'arrêt, aucun exited.

Debug express

Service muet : Idir lit docker logs demo avant tout, puis entre avec exec -it demo sh si besoin.

Arrêt poli

En production, Idir préfère stop (SIGTERM, fin propre) à kill (mort immédiate).

Grand ménage

Des dizaines d'exited oubliés : Idir purge avec docker container prune et repart propre.

✓ Bonnes pratiques

  • Nommez (--name) pour viser juste ensuite.
  • Utilisez --rm pour tous les essais jetables.
  • Préférez stop à kill : les applis finissent proprement.

✗ Pièges fréquents

  • Laisser des dizaines de conteneurs exited (prune oublié).
  • Confondre rm (conteneur) et rmi (image).
  • Fermer le terminal au lieu de stopper (fantômes en -d).

Points clés à retenir

  • run crée ET démarre.
  • ps voit, logs lit, exec entre.
  • stop arrête, rm supprime.
  • --rm et prune gardent la machine propre.

Défi 48h — appliquez demain

Jouez le cycle demo d'Idir sans tricher : run -d nommé, ps, logs, exec + exit, stop, rm — puis ps -a pour prouver qu'il ne reste rien.

Checklist sortie de section
  • Je peux jouer le cycle run → ps → logs → exec → stop → rm sans aide.
  • Je sais lire vivants et morts avec ps et ps -a.
  • Ma machine reste propre (--rm pour les essais, prune contre les exited).
Auto-évaluation 1-5 : est-ce que j'enchaîne les 6 commandes sans regarder le mémo ?Auto-évaluation 1-5 : ai-je vérifié la disparition avec ps -a (zéro fantôme) ?

Questions fréquentes

Différence entre stop et kill ?

stop envoie SIGTERM (l'appli se termine proprement) puis SIGKILL après un délai ; kill tue immédiatement. En production, on préfère stop — le réflexe d'Idir pour les applis.

Où vont les logs ?

Le daemon les capture (json-file par défaut). docker logs les relit ; pensez à la rotation pour les services durables.

Vérifiez votre compréhension

Vous testez une image jetable. Quelle option évite d'oublier le nettoyage ?

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

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