commande unique pour arrêter et supprimer le conteneur docker

138

Existe-t-il une commande qui peut combiner la commande docker stopet docker rmensemble? Chaque fois que je veux supprimer un conteneur en cours d'exécution, j'ai besoin d'exécuter 2 commandes séquentiellement, je me demande s'il existe une commande combinée qui peut simplifier ce processus.

docker stop CONTAINER_ID
docker rm CONTATINER_ID
mainframer
la source
2
Cela dépend du conteneur: ctl.io/developers/blog/post/…
VonC

Réponses:

238

Vous pouvez utiliser :

docker rm -f CONTAINER_ID

Il supprimera le conteneur même s'il est toujours en cours d'exécution.

https://docs.docker.com/engine/reference/commandline/rm/

Vous pouvez également exécuter vos conteneurs avec l' --rmoption, elle sera automatiquement supprimée à l'arrêt.

https://docs.docker.com/engine/reference/run/#clean-up-rm

Edit: le rm -fpeut être dangereux pour vos données et convient mieux aux conteneurs de test ou de développement. Le commentaire de @ Bernard à ce sujet vaut la peine d'être lu.

vmonteco
la source
16
Faites attention. docker rm -fenvoie un signal SIGKILL au conteneur. Cela peut ne pas laisser le temps au conteneur d'enregistrer correctement son état. Pour les conteneurs non sans état, il faut vraiment utiliser docker stopsuivi de docker rm. Cela envoie un signal SIGTERM qui par défaut donne aux conteneurs un maximum de 10 secondes pour effectuer leur arrêt avant que le démon docker envoie finalement un SIGKILL.
Bernard
3
Je trouve l'option --rm la plus appropriée pour les conteneurs de courte durée.
Prashant Sinha
30
docker stop CONTAINER_ID | xargs docker rm
ortex
la source
Idée brillante. Je l'aime car il pourrait également être utilisé pour d'autres commandes, où vous voulez passer un argument sur deux commandes sans les répéter ou utiliser une variable.
Lion
16

Vous pouvez arrêter et supprimer le conteneur avec une seule commande et $_vous donne le dernier écho

docker stop CONTAINER && docker rm $_
Axel Monroy
la source
7

Dans mon cas, pour supprimer tous les conteneurs en cours d'exécution, j'ai utilisé

docker rm -f $(docker ps -a -q); docker rmi $(docker images -q)
user9869932
la source
2

Retirez tous les conteneurs: docker ps -aq | xargs docker rm -f

Andriy Tolstoï
la source
Erreur d'autorisation refusée. Ajout de sudo. sudo docker ps -aq | sudo xargs docker rm -f
Hussain K
2

Cela arrêtera et supprimera toutes les images, y compris les conteneurs en cours d'exécution, car nous utilisons -f

docker rmi -f $(docker images -a -q)
Pranoy Gn
la source
1

Utilisez la commande docker ps avec l'indicateur -a pour localiser le nom ou l'ID des conteneurs que vous souhaitez supprimer

docker ps -a

Pour supprimer: $ docker rm ID_or_Name ID_or_Name

Retirer un conteneur à la sortie:

Si vous savez lorsque vous créez un conteneur que vous ne voudrez pas le conserver une fois que vous avez terminé, vous pouvez exécuter docker run --rm pour le supprimer automatiquement à sa sortie.

Exécuter et supprimer: docker run --rm image_name

Retirez tous les conteneurs sortis:

Vous pouvez localiser les conteneurs à l'aide de docker ps -a et les filtrer en fonction de leur état: créé, redémarré, en cours d'exécution, mis en pause ou quitté. Pour examiner la liste des conteneurs sortis, utilisez l'indicateur -f pour filtrer en fonction de l'état. Une fois que vous avez vérifié que vous souhaitez supprimer ces conteneurs, utilisez -q pour transmettre les ID à la commande docker rm.

Liste:

docker ps -a -f status=exited

docker rm $(docker ps -a -f status=exited -q)

Supprimer les conteneurs en utilisant plus d'un filtre :

Les filtres Docker peuvent être combinés en répétant l'indicateur de filtre avec une valeur supplémentaire. Il en résulte une liste de conteneurs qui remplissent l'une ou l'autre des conditions. Par exemple, si vous souhaitez supprimer tous les conteneurs marqués comme Créé (un état qui peut résulter lorsque vous exécutez un conteneur avec une commande non valide) ou Quitté, vous pouvez utiliser deux filtres:

docker ps -a -f status=exited -f status=created

Arrêtez et retirez tous les conteneurs:

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
Prakash AWS
la source
0

Pour retirer un seul conteneur

docker rm -f CONTAINER_ID

Pour retirer tous les conteneurs

docker rm -f `docker container ps -qa`
Abhinav Mehta
la source
0

Pour supprimer tous les conteneurs arrêtés docker system prune

Pour arrêter le conteneur en direct, docker stop CONTAINER_IDattend 10 secondes et il appelledocker kill CONTAINER_ID

Ou avec docker kill CONTAINER_ID, vous pouvez immédiatement arrêter le conteneur

Nuriddin Kudratov
la source