当前位置: 首页 > 知识库问答 >
问题:

如何检查集装箱是否是最新的

梁丘扬
2023-03-14

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

我想完成的步骤:

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

docker-compose --file docker-compose.yml pull

2)docker命令检查我的容器'abc'是否需要更新(可能???)

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

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

备注:我知道第3步是检查并在必要时更新容器,但如果第2步返回True,我需要执行预任务

共有2个答案

东方俊明
2023-03-14

在我阅读时重申您的问题:

在更新容器之前,执行X

变化包括:

  • 图像更改
  • 容器的环境变化
  • 网络变化
  • 等等

太长,读不下去了您需要的是docker compose的试运行功能。你并不孤单:https://github.com/docker/compose/issues/1203

更多;我认为,在开发人员社区解决这个问题之前,您尝试使用< code>docker-compose本身来实现这个目的是不走运的。为了绝对安全,您可能希望在影响运行中的容器的任何事情即将发生变化时执行飞行前操作。

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

戴瑞
2023-03-14

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

< code>docker-compose将带有当前配置散列的标签放入容器配置中。您可以像这样获得配置散列:

docker inspect my-container -f '{{index .Config.Labels "com.docker.compose.config-hash"}}'

然后,您可以将此哈希与当前docker撰写文件的哈希进行比较:

docker-compose config --hash="my-container"

如果这些散列不同,容器可能需要重新构建,因为配置已经改变。

但是,如果您使用的是最新标签并且映像本身需要更新,这可能不起作用。为了说明这一点,您可以另外尝试如何检查我的本地docker映像是否已过时,而无需从其他地方推送?或Bash解析docker状态以检查本地映像是否最新

 类似资料:
  • 如何让prolog中的谓词返回值? 我需要找到一个树的节点,并检查它是否是一个最小堆。我猜是这样的:- 到目前为止我的代码是这个 输入的类型是- 输出应该为真。

  • 这个问题用泛型约束标记为重复,where T:struct和where T:class和旧标题,它是。所以我更新了标题,以便更好地表达我的问题。我想问的是,如何调用泛型方法并仅在参数不为null的情况下才使用该参数,而不使用装箱。 一些为链接问题解释的变通方法可以用来回答这个问题,但我仍然相信这是一个根本不同的问题。

  • 问题内容: 通过使用Java反射,我们可以轻松知道对象是否为数组。判断对象是否为集合(Set,List,Map,Vector …)的最简单方法是什么? 问题答案:

  • 如何检查JavaSDK是否安装在Mac上? 有命令行吗?

  • 问题内容: 如何检查Mac上是否安装了Java SDK? 为此有命令行吗? 问题答案: 在终端会做

  • 在我们的应用程序中使用PHP检查包(任何版本)是否已安装/存在的最干净的方法是什么? 基本上,在我们的应用程序中,我们希望调用具有以下签名的函数: bool函数hasComposerPackage(字符串$PackageName) 这个函数必须包含什么,这样我们才能做这样的事情: 理想情况下,这需要在没有任何命令行exec调用的情况下发生,并且在这个过程中不应该自动加载任何不必要的文件。