如何找出哪个docker镜像被哪个docker容器使用

如何找出哪个docker镜像被哪个docker容器使用

我正在尝试编写一个脚本或一行程序来找出哪个docker容器使用了docker镜像

例如:假设我有一个 docker 镜像 9f38484d220f,现在我需要找出使用该镜像创建了哪个容器。

我知道docker inspect <container id>需要提供图像和容器 ID,但是还有其他方法可以做到这一点吗?

答案1

您可以使用 docker inspect 的格式化输出。首先,获取您要查找的镜像 ID:

image_id=$(docker image inspect --format '{{.Id}}' $your_image_name)

然后,您可以在格式化的输出中找到带有“if”的容器,删除导致格式找到不同图像 ID 的空白行:

docker container inspect $(docker container ls -aq) \
  --format "{{ if eq .Image \"$image_id\" }}{{.Id}}{{end}}" \
| egrep -v '^$'

如果您想要输出每个容器的图像,您可以使用以下命令:

docker container inspect $(docker container ls -aq) \
  --format "Image: {{.Image}} Container: {{.Id}}"

答案2

这不是最优雅的方式,但如果你正在寻找一个解决方案

$ docker inspect $(docker ps -a -q) |grep -B 20 ab56bba91343 |egrep -i \"Id\":
        "Id": "cfdc796abfcd23e9ac37f3ba136580cd9e2b9add6689b58af11710efd118876e",
        "Id": "d3e1e6309696a2847224a78f21d71451bd7d2bbac970209f057665c2094c90db",
        "Id": "8abf021e2c63ffaccd8a5d9c29de5b33262ee7de5f0b35de6718b3e65b374c5d",

相关内容