I'd like to find out if a Docker image with a specific tag exists locally. I'm fine by using a bash script if the Docker client cannot do this natively.
Just to provide some hints for a potential bash script the result of running the
docker images command returns the following:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE rabbitmq latest e8e654c05c91 5 weeks ago 143.5 MB busybox latest 8c2e06607696 6 weeks ago 2.433 MB rabbitmq 3.4.4 a4fbaad9f996 11 weeks ago 131.5 MB
I usually test the result of
docker images -q (as in this script):
if [[ "$(docker images -q myimage:mytag 2> /dev/null)" == "" ]]; then # do something fi
docker images only takes
REPOSITORY as parameter, you would need to grep on tag, without using
docker images takes tags now (docker 1.8+)
The other approach mentioned below is to use docker inspect.
But with docker 17+, the syntax for images is:
docker image inspect (on an non-existent image, the exit status will be non-0)
As noted by iTayb in the comments:
docker images -qmethod can get really slow on a machine with lots of images. It takes 44s to run on a 6,500 images machine.
docker image inspectreturns immediately.