2016-05-12 3 views
12

Diese question erläutert, wie Sie Docker-Container stoppen, die von einem Image gestartet wurden.Andocken von Andock-Containern nach Image-Namen und kein Fehler, wenn keine Container ausgeführt werden

Aber wenn es keine laufenden Container gibt, bekomme ich den Fehler Docker Stop erfordert ein Minimum von einem Argument. Was bedeutet, dass ich diesen Befehl nicht in einem langen .sh-Skript ausführen kann, ohne dass es bricht.

Wie kann ich diese Befehle ändern, um zu arbeiten, auch wenn keine Ergebnisse gefunden werden?

docker stop $(docker ps -q --filter ancestor="imagname") 
docker rm `docker ps -aq` && 

(Ich bin für eine reine Docker Antwort suchen, wenn möglich, nicht ein bash-Test, wie ich meinen Skript über ssh renne so glaube ich nicht, dass ich Zugang zu normalen Skript Tests habe)

+1

Die Antwort in Kampdes Kommentar zu diesem Blogpost gefunden: http://blog.yohanliyanage.com/2015/05/docker-clean-up-after-yourself/. Verwenden Sie einfach xargs mit r, um leere Pipes zu ignorieren: ** docker ps -q --filter ancestor = "imageName" | xargs -r docker stop ** – Richard

+1

Sie sollten Ihre Lösung als Antwort posten und akzeptieren. –

Antwort

16

Putting dies für den Fall, können wir anderen helfen:

Behälter zu stoppen bestimmtes Bild mit:

docker ps -q --filter ancestor="imagename" | xargs -r docker stop 

zu verlassen Behälter entfernen:

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

Um nicht verwendete Bilder zu entfernen:

docker rmi $(docker images -f "dangling=true" -q) 

Wenn Sie eine Docker verwenden> 1,9:

docker volume rm $(docker volume ls -qf dangling=true) 

Wenn Sie Docker verwenden < = 1,9, dies statt:

docker run -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker:/var/lib/docker --rm martin/docker-cleanup-volumes 

Docker 1.13 Update:

nicht verwendete Bilder zu entfernen:

docker image prune 

Um nicht verwendete Behälter zu entfernen:

docker container prune 

nicht verwendete Mengen zu entfernen:

docker volume prune 

nicht genutzte Netzwerke entfernen :

docker network prune 

Um alle nicht verwendeten Komponenten zu entfernen:

docker system prune 

Wichtig: Stellen Sie sicher, dass Sie die Befehle und Backup wichtiger Daten zu verstehen, bevor diese in der Produktion ausgeführt wird.

+1

nettes Update für Docker v 1.13 +1 – rocksteady

Verwandte Themen