小编典典

按映像名称停止 Docker 容器 - Ubuntu

all

在 Ubuntu 14.04 (Trusty Tahr) 上,我正在寻找一种方法来停止正在运行的容器,我拥有的唯一信息是 Docker
运行命令中使用的映像名称。

是否有命令查找与该映像名称匹配的所有匹配的运行容器并停止它们?


阅读 100

收藏
2022-07-07

共1个答案

小编典典

如果您知道image:tag确切的容器版本

issue 8959之后,一个好的开始是:

docker ps -a -q --filter="name=<containerName>"

由于name指的是 容器
而不是图像名称,因此您需要使用的回答中提到的更新的Docker
1.9过滤器祖先

docker ps -a -q  --filter ancestor=<image-name>

正如kiril在下面评论的那样,要删除这些容器:

stop也返回容器。

所以链接stop并将rm完成这项工作:

docker rm $(docker stop $(docker ps -a -q --filter ancestor=<image-name> --format="{{.ID}}"))

如果您只知道图像名称(不知道image:tag

指出的那样:

选项不支持通配符匹配。

提出了一个解决方案,但是当您从同一个图像运行 _多个_容器时,我设法运行的解决方案是(~/.bashrc例如您的):

dsi() { docker stop $(docker ps -a | awk -v i="^$1.*" '{if($2~i){print$1}}'); }

然后我只需调用我的 bash 会话(在 sourcing 之后~/.bashrc):

dsi alpine

任何运行的容器alpine.*:xxx都会停止。

含义:任何名称以. 开头alpine的图像。如果您想更精确,
您可能需要调整。awk -v i="^$1.*"``^$1.*

当然,从那里:

drmi() { docker rm $(dsi $1  | tr '\n' ' '); }

adrmi alpine会停止 并移除 任何alpine:xxx容器。

2022-07-07