通过图像名称停止Docker容器,如果没有容器正在运行,请不要错误

这个问题解释了如何停止从映像启动的Docker容器。

但是,如果没有正在运行的容器,我得到的错误docker停止需要至less一个参数 。 这意味着我不能在一个很长的.sh脚本中运行这个命令而不会中断。

即使没有find结果,我如何更改这些命令来工作?

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

(我正在寻找一个纯粹的Docker答案,如果可能的话,不是一个bashtesting,因为我通过SSH运行我的脚本,所以我不认为我有权访问正常的脚本testing)

把这个情况下,我们可以帮助别人:

使用特定图像停止容器:

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

删除退出的容器:

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

要删除未使用的图像:

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

如果您使用的是Docker> 1.9:

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

如果您使用的是Docker <= 1.9,请改用此代码:

 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更新:

要删除未使用的图像:

 docker image prune 

删除未使用的容器:

 docker container prune 

要删除未使用的卷:

 docker volume prune 

删除未使用的networking:

 docker network prune 

要删除所有未使用的组件:

 docker system prune 

重要提示:在生产中执行此操作之前,请确保您了解这些命令并备份重要数据。