【问题标题】:How to check if an image is already present locally如何检查图像是否已在本地存在
【发布时间】:2019-11-18 20:08:24
【问题描述】:

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

【问题讨论】:

    标签: java docker docker-java


    【解决方案1】:

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

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

    docker-java 只是 Docker REST API 的包装器,inspect 命令相当于GET/images/{imageid}/json 的http 请求。请参阅Docker Engine API 中的3.2 图片部分。

    【讨论】:

    • 使用这种方法我必须捕获一个异常:com.github.dockerjava.api.exception.NotFoundException 这不是很干净的imo,但它可能是唯一的方法......
    • 我也不喜欢它,但图书馆就是这样工作的。如果图像不存在,则 REST 调用将返回一个404 (Not Found) HTTP 响应,该响应会被转换为NotFoundException
    • 很高兴它有帮助。
    猜你喜欢
    • 2022-11-18
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 2012-01-17
    • 2019-11-25
    • 2015-06-12
    • 2011-03-20
    • 1970-01-01
    相关资源
    最近更新 更多