我正在尝试编写一个脚本或一行程序来找出哪个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",