javadockerdocker-java

How to check if an image is already present locally


I am using the docker-java Maven library, and I would like to know if there is a way to check if an image has already been pulled or is present locally before pulling it if necessary, with only the image name. Currently, I have to pull the image everytime I execute it to ensure it is present locally, which is not nice.


Solution

  • If you need to do it in Java, you can use the inspectImageCmd method of the com.github.dockerjava.api.DockerClient interface. Then check the returned InspectImageResponse response object. Something like this:

    String imageId = ...;
    InspectImageResponse response = dockerClient.inspectImageCmd(imageid).exec();
    

    docker-java is just a wrapper for the Docker REST API and the inspect command is the equivalent of the GET http request to /images/{imageid}/json. See section 3.2 Images in Docker Engine API.