首页 > 解决方案 > 如何批量删除特定正在运行的 docker 容器

问题描述

我需要同时运行 70 多个 docker 容器。稍后,需要停止这些容器。

目前,我可以docker stop使用 shell 命令将它们全部使用docker stop $(docker ps -f since=<last docker before>)。它工作正常,但是如果在我之后启动了任何容器,我就会遇到问题,因为上面的代码也会停止它们。

有什么方法可以通过某种特定搜索关闭所有正在运行的容器?

我知道有一个docker ps -f label=<some label>,但我还没有弄清楚如何使用它。

标签: dockerdockerfile

解决方案


如果您同时启动多个容器,请使用

docker run --label=anyname other-docker-args-of-yours image:tag

当你想删除所有容器时

docker stop $(docker ps -f label=anyname | awk 'NR>1 {print$1}')

where是您在命令 anyname期间提供的标签名称,忽略列标题并仅打印值。docker runawk 'NR>1 {print$1}'CONTAINER_ID

Edit-1:
我后来意识到你也可以实现 Container_ID 的列表awk。我会考虑使用下面的行。

docker stop `docker ps -qaf label=anyname`

如果您还想删除所有停止的容器,请包含a在选项中,例如代替-qfuse -qaf
-q单独打印容器 ID。
-a对于所有容器,包括已停止。


推荐阅读