【问题标题】:How to validate if a remote Docker container has changed?如何验证远程 Docker 容器是否已更改?
【发布时间】:2019-03-18 16:43:07
【问题描述】:

我正在拉:docker pull <someimage>:<sometag>

如何验证远程标记已更改?所以我可以:

if [ CHECK_IF_REMOTE_TAG_IMAGE_HAS_CHANGED ]; then
    docker rm <someimage>:<sometag>
    docker pull <someimage>:<sometag>
fi

这在使用标签 = :latest 的容器时会派上用场。

【问题讨论】:

  • 我很惊讶docker search 在网站 UI 上提供该信息时没有返回容器的最后更新日期。如果你能做到,再加上docker history image:latest 应该就够了
  • 我不确定是否有可靠的方法,除非您使用的 docker 注册表提供 API 来检索最新版本/标签。

标签: docker


【解决方案1】:

您可以使用container-diff 来比较容器图像,当两个图像都被标记为version latest

【讨论】:

  • latest 不是一个版本,它是另一个标签来标记没有设置特定构建标签的构建。如果容器的下一个版本的latest 构建使用特定标签(如 1.0)构建,这将如何工作?
  • 谢谢,不幸的是container-diff 似乎根本不起作用。 github.com/GoogleContainerTools/container-diff/issues/305
  • @BobvanLuijt 在回答这个问题之前只是跑了container-diff。试试你的图片。
【解决方案2】:
docker inspect -f {{.Id}} mongo:latest

为您提供随每次构建而更改的图像 ID [猜测 docker build 是用于更改/修改图像的内容] - 我不确定使用 docker save 时的行为。示例 Dockerfile 将图像 mongo:latest 和新标签更改为 mongo:test1

FROM mongo:latest
COPY ./test.txt /tmp

$> docker build -t mongo:test1 .

用于比较 mongo:latest 和 mongo:test1 的 shell 脚本

ID1=$(docker inspect -f {{.Id}} mongo:latest)
ID2=$(docker inspect -f {{.Id}} mongo:test1)

if [ "$ID1" == "$ID2" ]
then
    echo "Same Image"
else
    echo "Image changed"
fi

输出

图片已更改

【讨论】:

    猜你喜欢
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2018-02-16
    相关资源
    最近更新 更多