Guides/Comment arrêter des conteneurs Docker

Comment arrêter des conteneurs Docker sur un Mac, un par un ou tous à la fois

Atta 🐬

Fondateur de Vitals

Publié le

En bref

Pour arrêter un conteneur Docker, lancez docker stop suivi de son nom ou de son ID ; docker ps les liste. Pour arrêter tous les conteneurs en cours d’exécution, lancez docker stop $(docker ps -q). Dans un projet Compose, docker compose stop arrête ses conteneurs et docker compose down les supprime en plus. docker stop demande au conteneur de s’arrêter et le force au bout de 10 secondes. Un conteneur qui revient a une politique de redémarrage ; désactivez-la avec docker update --restart=no. Vitals, un moniteur système pour Mac, arrête les conteneurs depuis la barre des menus : sa liste Conteneurs affiche la mémoire de chacun, et un clic l’arrête après vous l’avoir demandé.

Comment arrêter des conteneurs Docker depuis le Terminal

  1. 01 Lancez docker ps pour lister les conteneurs en cours d’exécution, avec leurs noms et leurs ID.
  2. 02 Arrêtez-en un avec docker stop et son nom, par exemple docker stop web-1. Vous pouvez en nommer plusieurs dans une même commande.
  3. 03 Arrêtez tous les conteneurs en cours d’exécution avec docker stop $(docker ps -q). docker ps -q n’affiche que les ID, et docker stop les prend tous.
  4. 04 Pour un projet Compose, lancez docker compose stop dans son dossier pour arrêter ses services, ou docker compose down pour les arrêter et supprimer les conteneurs et le réseau du projet. Les volumes restent, sauf si vous ajoutez -v.
  5. 05 Relancez docker ps. Un conteneur encore listé est toujours en train de s’arrêter, et celui qui revient un instant plus tard a une politique de redémarrage.

Les mêmes commandes fonctionnent avec OrbStack, Colima et Rancher Desktop quand la commande docker pointe vers eux. Podman a podman stop, et podman stop -a les arrête tous.

Arrêter un conteneur met fin à ses processus et conserve tout le reste, ses fichiers, ses réglages et ses volumes, prêt pour docker start. C’est donc la façon sûre de récupérer la mémoire et le processeur d’un conteneur dont vous ne vous servez pas. Le tableau ci-dessous le compare aux commandes que l’on utilise à côté.

docker stop, kill, pause, rm et compose down

CommandeCe qu’elle faitÀ utiliser quand
docker stop Envoie SIGTERM, puis SIGKILL au bout de 10 secondes Presque toujours : l’app peut finir d’écrire et fermer ses connexions
docker kill Envoie SIGKILL immédiatement Un conteneur ignore docker stop
docker pause Fige les processus, qui gardent leur mémoire Vous voulez récupérer le processeur un moment, pas la mémoire
docker rm Supprime un conteneur arrêté, ou un conteneur en cours d’exécution avec -f Vous n’en avez plus besoin ; les volumes nommés restent
docker compose stop Arrête les conteneurs d’un projet et les conserve Vous allez bientôt relancer le même projet
docker compose down Arrête et supprime les conteneurs et le réseau Vous voulez repartir de zéro la prochaine fois ; ajoutez -v pour supprimer aussi les volumes

Pourquoi un conteneur arrêté redémarre

Un conteneur doté d’une politique de redémarrage est relancé par Docker. Avec always, un conteneur que vous avez arrêté revient au prochain démarrage de Docker Desktop : les conteneurs arrêtés hier tournent de nouveau après un redémarrage. Avec unless-stopped, un conteneur que vous avez arrêté reste arrêté. Les fichiers Compose définissent souvent restart: always pour les bases de données et les caches.

Pour voir la politique d’un conteneur, lancez docker inspect --format '{{.HostConfig.RestartPolicy.Name}}' suivi de son nom. Pour la désactiver, lancez docker update --restart=no et le nom, ou modifiez restart: dans le fichier Compose.

Quand docker stop prend 10 secondes

docker stop attend que le processus principal du conteneur se termine après SIGTERM. Un processus qui ignore le signal, souvent un script shell qui ne le transmet pas, bloque l’arrêt pendant les 10 secondes entières avant que Docker ne le tue. docker stop -t 2 raccourcit l’attente. Corriger l’image la fait s’arrêter immédiatement : lancez l’app avec exec dans le script d’entrée, ou définissez init: true sur le service dans Compose.

Arrêter des conteneurs, et récupérer la mémoire

Sur un Mac, les conteneurs tournent dans une seule machine virtuelle Linux. Les arrêter libère leur mémoire à l’intérieur, mais la machine virtuelle peut continuer à la retenir : le Moniteur d’activité peut donc encore afficher un gros Virtual Machine Service for Docker. Resource Saver, ou quitter Docker Desktop, la rend à macOS ; voir Docker utilise trop de mémoire pour les réglages.

Arrêter des conteneurs sans le Terminal

La vue Containers de Docker Desktop a un bouton Stop sur chaque conteneur et sur chaque projet Compose. Elle se trouve dans la fenêtre de Docker Desktop : il faut donc ouvrir l’app pour s’en servir. Des apps de barre des menus comme Captain listent les conteneurs sous une icône de la barre des menus, avec un bouton de démarrage et d’arrêt pour chacun. Vitals fait de même depuis sa barre des menus, et ajoute ce qu’aucune d’elles ne montre : la mémoire et le processeur qu’utilise chaque conteneur, pour savoir lequel arrêter.

Ce que Vitals apporte

Vitals arrête les conteneurs depuis la barre des menus du Mac, leur mémoire sous les yeux.

  • La liste Conteneurs du menu déroulant : chaque conteneur en cours d’exécution avec son projet Compose, son image et une barre pour sa mémoire
  • Survolez-en un et cliquez sur le × qui apparaît. La ligne vous demande confirmation, puis l’arrête comme le fait docker stop, avec 10 secondes pour s’arrêter proprement
  • Dans l’onglet Conteneurs de la fenêtre, sélectionnez-en plusieurs et cliquez en maintenant la touche Contrôle pour les arrêter ensemble, ou faites de même sur un projet Compose et choisissez Tout arrêter
  • La mémoire, le processeur, le réseau, le disque et les ports publiés de chaque conteneur, avec Docker Desktop, OrbStack, Colima, Rancher Desktop et Podman

Bon à savoir

  • Vitals demande avant d’arrêter quoi que ce soit, et ne démarre, ne supprime ni ne modifie jamais un conteneur.
  • Un conteneur doté d’une politique de redémarrage peut être relancé par son moteur. La fenêtre le signale quand elle demande confirmation.
  • Si le moteur refuse ou ne répond pas, la ligne indique que le conteneur tourne toujours.
  • La liste Conteneurs apparaît quand un moteur est en cours d’exécution.
Obtenir Vitals pour $9 $9 pendant le lancement, $29 ensuite. Remboursement sous 14 jours.

Questions fréquentes

Comment arrêter tous les conteneurs Docker à la fois ?

Lancez docker stop $(docker ps -q). La commande liste les ID de tous les conteneurs en cours d’exécution et arrête chacun d’eux. Dans Vitals, sélectionnez-les dans l’onglet Conteneurs et cliquez en maintenant la touche Contrôle pour les arrêter ensemble.

Quelle est la différence entre docker stop et docker kill ?

docker stop envoie SIGTERM et attend jusqu’à 10 secondes avant de forcer le conteneur avec SIGKILL. docker kill envoie SIGKILL immédiatement : l’app n’a pas le temps de finir d’écrire ni de fermer ses connexions.

Quelle est la différence entre docker compose stop et down ?

docker compose stop arrête les conteneurs et les conserve, prêts pour docker compose start. docker compose down les arrête et supprime les conteneurs et le réseau du projet ; les volumes restent, sauf si vous ajoutez -v.

Pourquoi mon conteneur Docker redémarre-t-il après que je l’ai arrêté ?

Il a une politique de redémarrage always : Docker le relance donc au démarrage de Docker Desktop. Lancez docker update --restart=no avec son nom, ou modifiez restart: dans le fichier Compose.

Arrêter un conteneur supprime-t-il ses données ?

Non. Un conteneur arrêté garde ses fichiers et ses volumes, et docker start le relance. docker rm supprime le conteneur ; les volumes nommés restent jusqu’à ce que vous les supprimiez.

Peut-on arrêter des conteneurs Docker depuis la barre des menus du Mac ?

Oui, avec Vitals. Son menu déroulant dans la barre des menus liste les conteneurs en cours d’exécution avec leur mémoire, et un clic arrête un conteneur après vous l’avoir demandé. Il fonctionne avec Docker Desktop, OrbStack, Colima, Rancher Desktop et Podman.

Dans le lexique

Autres guides