如何更新Docker镜像

24

当官方仓库更新时,我如何更新docker镜像?

当我更改DockerFile文件或Dockerfile包含时间敏感信息时,我如何更新自定义镜像?

构建新镜像还是重新构建现有镜像更好?

重新构建现有镜像的最佳方法是什么?

区分同一镜像的多个构建的最佳方式是什么?

1个回答

24

当官方仓库更新时,我如何更新docker镜像?

如果您正在使用Docker Hub创建自动化构建,则可以添加一个仓库链接,在链接的仓库更新时重新构建您的仓库。

如果想要自己进行构建,可以通过上述链接创建一个简单的仓库来获取通知并重新构建,然后使用Web Hook通知您的构建系统进行更改。

Dockerfile发生变化,或者Dockerfile包含时间敏感信息,我如何更新自定义镜像?

如果您正在使用Docker Hub进行自动化构建,则对BitBucket或GitHub源代码仓库进行更改(包括Dockerfile更改)将触发新的构建。

如果您正在自行构建镜像,只需在Dockerfile所在目录中键入docker build .。您可以使用--no-cache强制进行完全刷新。

构建新镜像还是重建现有镜像更好?

这取决于谁在使用您的镜像。当进行构建时,结果始终是新的镜像,但是如何为结果打标签可以使其看起来像旧镜像的替换品或全新的东西。

区分相同镜像的多个构建的最佳方法是什么?

使用名称中的:tag功能,例如:

ubuntu:latest
ubuntu:12.04
ubuntu:14.04
...

请查看https://registry.hub.docker.com/_/ubuntu/,以获取“ubuntu”镜像的所有变体的完整列表。请参阅tag文档,了解友好镜像名称的完整格式。所有标签和名称都是规范镜像名称的别名,当您运行docker images --no-trunc时,会显示一个长得像UUID的字符串。


2
非常感谢你,Andy。我写下这个问题是为了想象一下有关Docker镜像维护的教程。你的回答非常出色,超出了我的最初期望。我认为这应该被列入官方的Docker文档中,因为我猜这对于Docker新手来说是一个非常普遍的问题。 - Mascarpone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接