这个 question解释如何停止从镜像启动的 Docker 容器。
但如果没有正在运行的容器,我会收到错误 docker stop requires a minimum of one argument。这意味着我不能在一个长的 .sh 脚本中运行这个命令而不破坏它。
即使没有找到结果,如何更改这些命令以使其正常工作?
docker stop $(docker ps -q --filter ancestor="imagname")
docker rm `docker ps -aq` &&
(如果可能,我正在寻找一个纯粹的 Docker 答案,而不是 bash 测试,因为我正在通过 ssh 运行我的脚本,所以我认为我无法访问正常的脚本测试)
最佳答案
以防万一我们可以帮助他人:
使用特定图像停止容器:
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
要删除未使用的网络:
docker network prune
删除所有未使用的组件:
docker system prune
重要提示:在生产中执行此操作之前,请确保您了解命令并备份重要数据。
关于bash - 按镜像名称停止 docker 容器,如果没有容器正在运行,则不会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37182148/