检查本地docker镜像是否最新



在我的用例中,我总是获取带有"latest"标签的图像。标签。这个"latest"标签会定期更新。因此,即使在注册表上更新了最新的标签图像,docker也会运行。命令不能在本地主机上更新它。这是"最新"的预期行为。本地主机上存在镜像。但我想确认一下如果"最新的"本地主机和注册表上的映像不同,那么它应该从注册表中提取最新的映像。有什么办法可以做到这一点吗?

您可以在运行映像之前手动docker pull。这是相当便宜的,特别是如果图像没有改变。您可以在旧容器仍在运行时执行此操作,以最大限度地减少停机时间。

docker pull the-image
docker stop the-container
docker rm the-container
docker run -d ... --name the-container the-image

在自动化环境中,由于这种模糊性,您可能会考虑避免使用latest标记和其他类似的固定字符串。例如,在Kubernetes中,默认行为是重用具有某些名称的本地映像,这可能导致不同节点运行不同的latest映像。如果你用日期戳或源代码控制ID或其他东西来标记你的图像,这样每个图像都有一个唯一的标签,你就可以使用那个标签。

在持续部署系统的上下文中查找标签值可能会有问题;Docker没有任何内置的方法来查找图像的最新标签。

# docker pull the-image:20220704  # optional
docker stop the-container
docker rm the-container
docker run -d ... --name the-container the-image:20220704
docker rmi the-image:20220630

最后一种方法的一个显著优点是,如果今天的构建碰巧被破坏了,很容易回到早期的构建;只需将图像标签切换回一个或两个构建。

最新更新