1

I am trying to write a script or one liner to find out docker image is used by which docker container

eg: Let say I have a docker image 9f38484d220f, now I need to find out which container is created using this image.

I know docker inspect <container id> give me both Image as well as a container id but is there is any other way to do that?

Prashant Lakhera
  • 713
  • 2
  • 10
  • 25

2 Answers2

1

You can use formatted output from docker inspect. First, get the image ID you want to find:

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

Then you can find containers with an "if" in the formatted output, removing blank lines that result in the format finds different image id's:

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

If you wanted to output the image for every container, you can use something like:

docker container inspect $(docker container ls -aq) \
  --format "Image: {{.Image}} Container: {{.Id}}"
BMitch
  • 5,966
  • 1
  • 25
  • 32
0

Not the most elegant way, but if you are looking for one liner solution

$ docker inspect $(docker ps -a -q) |grep -B 20 ab56bba91343 |egrep -i \"Id\":
        "Id": "cfdc796abfcd23e9ac37f3ba136580cd9e2b9add6689b58af11710efd118876e",
        "Id": "d3e1e6309696a2847224a78f21d71451bd7d2bbac970209f057665c2094c90db",
        "Id": "8abf021e2c63ffaccd8a5d9c29de5b33262ee7de5f0b35de6718b3e65b374c5d",
Prashant Lakhera
  • 713
  • 2
  • 10
  • 25