Docker 如何检查容器是否是最新的

Docker 如何检查容器是否是最新的,docker,docker-compose,Docker,Docker Compose,我正在使用docker compose在linux服务器(centos)中管理容器“abc” 我要完成的步骤: 1) docker撰写拉“abc”以拉我的最新图像 docker-compose --file docker-compose.yml pull 2) docker命令,用于检查我的容器“abc”是否需要更新(可能?) 3) 如果我的容器“abc”,我将执行docker compose up-d docker-compose --file docker-compose.yml up -

我正在使用docker compose在linux服务器(centos)中管理容器“abc”

我要完成的步骤:

1) docker撰写拉“abc”以拉我的最新图像

docker-compose --file docker-compose.yml pull
2) docker命令,用于检查我的容器“abc”是否需要更新(可能?)

3) 如果我的容器“abc”,我将执行docker compose up-d

docker-compose --file docker-compose.yml up -d 

备注:我知道第3步是检查并在必要时更新容器,但如果第2步返回True,我需要执行预任务,以便在阅读时重申您的问题:

在更新容器之前,请执行X

变化包括:

  • 图像变化
  • 容器的环境变化
  • 网络变化
  • 等等
TLDR您需要的是
docker compose的
试运行
功能。你并不孤单:

更多我认为在开发人员社区解决此问题之前,您尝试使用
docker compose
本身来实现此目的是运气不好的。为了完全安全,当影响正在运行的集装箱的任何东西即将改变时,您需要执行飞行前操作


潜在方向:如果我们希望这样做,我们将构建一个shell脚本来为我们进行检查,简单到编写文件上的diff,或者更复杂到定位每个图像,例如,
grep image docker-compose.yml|sed“s/^.*\:\(.*),$/\1/g”
。。。等等。

我不完全确定这是否能满足您的需要,但您可以尝试检查您的容器是否需要如下更新:

docker inspect my-container -f '{{index .Config.Labels "com.docker.compose.config-hash"}}'
docker compose
将带有当前配置哈希的标签放入容器配置中。您可以按如下方式获取配置哈希:

docker inspect my-container -f '{{index .Config.Labels "com.docker.compose.config-hash"}}'
然后,您可以将此哈希值与当前docker compose文件的哈希值进行比较:

docker-compose config --hash="my-container"
如果这些散列值不同,则可能需要在配置更改时重新生成容器


但是,如果您使用的是
latest
标记,并且图像本身需要更新,则这可能不起作用。为了说明这一点,您可以另外尝试或

这似乎是相关的:感谢@TheGameiswar提供您的消息,但我没有找到任何用于我的步骤2的命令。因此,它没有实现….:读出上面链接中的所有评论您想做什么样的预任务?这听起来有点不对劲。。。