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