如何检查本地图像是否已经存在

时间:2019-07-09 09:39:09

标签: java docker docker-java

我正在使用docker-java Maven库,并且我想知道是否有一种方法可以检查图像是否已被拉出或在必要时在拉出之前在本地是否存在,仅使用图像名称。 当前,我必须在每次执行图像时都将其拉出,以确保它在本地存在,这是不好的。

2 个答案:

答案 0 :(得分:0)

docker inspect将输出图像的信息(如果存在),并返回有效的答案。

docker image inspect image:latest
  • 如果图像不存在:

      

    错误:没有这样的图片:image:latest

  • 如果这样做,将输出图像的信息:

      [
       {  
         "Id":"fe01a428b9d9de35d29531e9994157978e8c48fa693e1bf1d221dffbbb67b170",      
         "Parent": "10acc31def5d6f249b548effbaccfd61af0240c17315a7ad393d022c5ca2", 
          ....
       }
     ]
    

在这些answers中,有一些不错的脚本代码。您可以将一个放在.sh中,并将其作为工具:

docker image inspect ${image_id}:${image_tag}>/dev/null 2>&1 && 
echo exists! || echo doesn't exist!

答案 1 :(得分:0)

如果需要使用Java进行操作,则可以使用inspectImageCmd接口的com.github.dockerjava.api.DockerClient方法。然后检查返回的InspectImageResponse响应对象。像这样:

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

docker-java只是Docker REST API的包装,并且inspect命令等效于GET的{​​{1}} http请求。请参阅Docker Engine API中的 3.2图片部分。