2016-05-12 24 views
12

這個question解釋瞭如何停止從圖像啓動的Docker容器。按照圖像名稱停止Docker容器,如果沒有容器正在運行,請不要錯誤

但是,如果沒有正在運行的容器,我得到錯誤碼頭停止需要至少一個參數。這意味着我不能在一個很長的.sh腳本中運行這個命令而不會中斷它。

即使沒有找到結果,我如何更改這些命令以正常工作?

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

(我在尋找一個純粹的泊塢窗的答案,如果可能的話,不是bash的測試,因爲我跑我的腳本通過ssh,所以我不認爲我有機會到正常腳本測試)

+1

在這篇博客中找到了kampde評論的答案:http://blog.yohanliyanage.com/2015/05/docker-clean-up-after-yourself/。只需使用xargs和r來忽略空管道:** docker ps -q --filter ancestor =「imageName」| xargs -r docker stop ** – Richard

+1

您應該將解決方案作爲答案發布並接受它。 –

回答

16

把這種情況下,我們可以幫助別人:

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

要刪除退出容器:

要使用特定的圖像停止容器:如果您使用的是泊塢窗> 1.9

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

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

如果您使用的碼頭工人< = 1.9,用這個來代替:

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

刪除未使用的圖像

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

多克1.13更新:

刪除未使用的圖像:

docker image prune 

刪除未使用的容器:

docker container prune 

要刪除未使用的卷:

docker volume prune 

刪除未使用的網絡:

docker network prune 

要刪除所有未使用的組件:

docker system prune 

重要提示:請務必在生產中執行此之前瞭解的命令和備份重要數據。

+1

泊塢窗v 1.13 +1的更新 – rocksteady