2016-05-12 17 views
12

Questo question spiega come arrestare i contenitori Docker avviati da un'immagine.Arrestare i contenitori finestra mobile in base al nome dell'immagine e non eseguire errori se non sono in esecuzione contenitori

Ma se non ci sono contenitori in esecuzione ottengo l'errore docker stop richiede un minimo di un argomento. Il che significa che non posso eseguire questo comando in un lungo script .sh senza che si rompa.

Come faccio a cambiare questi comandi per funzionare anche se non vengono trovati risultati?

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

(sto cercando una risposta pura Docker, se possibile, non un test di bash, come sto facendo funzionare il mio script tramite ssh quindi non credo di avere accesso ai normali test di script)

+1

Trovato la risposta nel commento di kampde su questo post del blog: http://blog.yohanliyanage.com/2015/05/docker-clean-up-after-yourself/. Basta usare xargs con r per ignorare i pipe vuoti: ** docker ps -q --filter ancestor = "imageName" | xargs -r docker stop ** – Richard

+1

Dovresti pubblicare la tua soluzione come risposta e accettarla. –

risposta

16

Mettendo questo nel caso in cui siamo in grado di aiutare gli altri:

di smettere di contenitori utilizzando un'immagine specifica:

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

Per rimuovere i contenitori usciti:

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

di rimuovere le immagini inutilizzati:

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

Se si utilizza un Docker> 1.9:

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

Se si utilizza Docker < = 1.9, utilizzare questo invece:

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:

Per rimuovere le immagini inutilizzate:

docker image prune 

Per rimuovere i contenitori inutilizzati:

docker container prune 

Per rimuovere i volumi non utilizzati:

docker volume prune 

Per rimuovere le reti non utilizzati :

docker network prune 

Per rimuovere tutti i componenti non utilizzati:

docker system prune 

IMPORTANTE: assicurarsi di aver compreso i comandi ei dati importanti di backup prima di eseguire questa produzione.

+1

bel aggiornamento per finestra mobile v 1.13 +1 – rocksteady

Problemi correlati