【问题标题】:Stopping docker containers by image name, and don't error if no containers are running按镜像名称停止 docker 容器,如果没有容器正在运行,则不会出错
【发布时间】:2016-09-08 00:09:23
【问题描述】:

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 运行我的脚本,所以我认为我无法访问正常的脚本测试)

【问题讨论】:

标签: bash docker


【解决方案1】:

以防万一我们可以帮助他人:

使用特定图像停止容器:

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

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

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

【讨论】:

  • 试图弄清楚如何在macos上使用这个docker ps -q --filter ancestor="imagename" | xargs -r docker stop报告xargs: illegal option -- r usage: xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr] [-L number] [-n number [-x]] [-P maxprocs] [-s size] [utility [argument ...]]
  • 好的,在mac上我想我们不能这么容易地保护自己免受空字符串的伤害,只需删除-r -> docker ps -q --filter ancestor="web-container" | xargs docker stop
猜你喜欢
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 2020-03-11
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
  • 2019-10-09
相关资源
最近更新 更多