2.5 Gérer le bouton On/Off (Start, Stop & Restart)
Gérer le cycle de vie d'un conteneur.
Gérer le bouton On/Off : Start, Stop, Pause & Destroy
Ce qui est génial avec Docker, c'est que toutes vos applications peuvent tourner de manière claire et isolée sur notre machine. Mais justement, empiler les conteneurs en tâche de fond, c'est le meilleur moyen de grignoter toute notre RAM et de faire ramer notre PC !
Il est donc crucial de veiller à éteindre les bonnes applications au bon moment et de les relancer uniquement quand c'est nécessaire. Pour cela, Docker offre des commandes extrêmement simples.
1. Éteindre proprement : docker stop
Quand nous avons fini de travailler sur un projet, il faut éteindre le conteneur. La commande docker stop envoie un signal au conteneur pour lui dire de s'arrêter proprement (il sauvegarde ses états en cours et ferme ses processus sans violence).
➜ ~ docker stop nginx
Le conteneur s'arrête, libère la mémoire vive (RAM) de votre PC, mais il n'est pas supprimé. Il passe juste en statut Exited (visible avec un docker ps -a).
2. Relancer la machine : docker start
Le lendemain matin, nous reprenons notre travail. Pas besoin de refaire un docker run compliqué avec tous les ports et les variables d'environnement ! Le conteneur existe déjà, il dort. Il suffit de le réveiller :
➜ ~ docker start nginx
Hop, le conteneur repart avec exactement la même configuration que la veille.
Le joker : docker restart
Si votre application bug ou que vous venez de changer un fichier de configuration majeur, vous pouvez redémarrer le conteneur d'un seul coup avec docker restart mon_premier_site. C'est l'équivalent du fameux "Avez-vous essayé de redémarrer la box ?".
3. Geler le temps : docker pause
Celle-ci est moins connue mais très pratique. Imaginez que vous ayez besoin de 100% de la puissance de votre processeur (CPU) pendant 5 minutes, mais que vous ne voulez pas éteindre votre conteneur Docker. Vous pouvez le "mettre sur pause".
Bash
➜ ~ docker pause nginx
Le conteneur est "gelé". Il reste en RAM, mais il ne consomme plus aucune ressource processeur.
Pour le dégeler et reprendre exactement là où il en était :
➜ ~ docker unpause nginx
4. La destruction finale : docker rm (Destroy)
Un conteneur arrêté avec docker stop ne consomme plus de RAM, mais il prend toujours de la place sur votre disque dur. Si vous n'en avez plus du tout besoin, il faut le détruire définitivement avec rm (pour remove).
Bash
➜ ~ docker rm nginx
stop, puis le rm.