0.4Cycle de vie : run, ps, stop, rm, logs
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.
🔎 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
- Lancez un nginx nommé avec -d, comme Idir (docker run -d --name demo nginx:1.27).
- Affichez-le (ps), lisez ses logs.
- Entrez dedans avec exec -it … sh, puis sortez (exit).
- Arrêtez-le, supprimez-le, vérifiez avec ps -a.
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.
- 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).
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.
Vous testez une image jetable. Quelle option évite d'oublier le nettoyage ?