docker 用图像找到码头集装箱?

r9f1avp5  于 2022-12-18  发布在  Docker
关注(0)|答案(3)|浏览(119)

如果我有一个映像的ID,我怎么知道哪些容器正在使用这个映像?当删除一个仍然在使用的映像时,你会得到一个错误消息:

$ docker rmi 77b0318b76b3
Error response from daemon: Conflict, cannot delete 77b0318b76b3 because the container 21ee2cbc7cec is using it, use -f to force

但是,我如何能够以自动化的方式找到这个问题,而不试图删除它呢?

qlzsbp2j

qlzsbp2j1#

你可以试试这个:

docker ps -a | grep `docker images | grep IMAGE_ID | awk '{print $1":"$2}'` | awk '{print $1}'
  • 使用 docker ps -a,您可以获得所有容器的列表,包括您感兴趣的容器。
  • 问题是您有IMAGE NAME,但需要IMAGE ID。
  • 您可以使用 docker images 来获取给定IMAGE NAME的IMAGE ID,这就是您在grep中用来按IMAGE ID进行过滤的内容。
  • 最后,第一列只显示CONTAINERID。

示例:

docker ps -a \
 | grep `docker images | grep 3a041c1b0a05 | awk '{print $1":"$2}'` \
 | awk '{print $1}'

输出:

4d6fb8a7149f
2baa726b1aa5

希望这个有用。

nfs0ujit

nfs0ujit2#

如果要列出活动容器docker inspect -f '{{ .Config.Image}}' $(docker ps -q)和所有容器docker inspect -f '{{ .Config.Image}}' $(docker ps -qa)的图像

lh80um4z

lh80um4z3#

这将列出使用您的$IMAGE_ID的所有容器。

$图像标识可以是77b0318b76b3namespace/repo:tag
例如:$图像标识=“77 b 0318 b76 b3”

docker container ls --all --filter=ancestor=$IMAGE_ID --format "{{.ID}}"

相关问题