是否可以在 Dockerfile 中使用 FROM 指令拉取最新的图像?

Is it possible to make a FROM instruction in a Dockerfile pull the most recent image?

我想知道是否可以在 Dockerfile 中使用 FROM 指令在继续构建之前拉取最新的图像(例如 image:latest)?

目前,只有当图像尚未存储在本地时才会被拉取。

为了通过更新基础镜像构建 docker 镜像,您必须使用选项:

--pull

我给你留下了讨论这个选项的官方文档以及更多:official docker documentation

docker build --pull OTHER_OPTIONS PATH

来自https://docs.docker.com/engine/reference/commandline/build/

--pull      Always attempt to pull a newer version of the image

尽管出于开发目的可能有真正的用例,但我强烈建议避免在生产构建中依赖此选项。 Docker 图片必须是不可变的。使用此选项可能会导致从相同的源代码生成不同图像的情况,并且由于此类构建而导致的任何行为更改而代码中没有相应的更改都很难调试。

假设有一个名为 "derived project" 的项目使用基础映像 myBaseImage:latest

FROM myBaseImage:latest

<snipped>

CMD xyz
docker build --pull -t myDerivedImage:<version of source code> .

假设派生图像的标签是基于它的源代码版本(例如 git 提交哈希)这是标记图像的最常见方式,如果最新标签下的新基础图像是在派生项目没有变化的情况下发布,派生项目的构建将在基础图像更改前后以相同的名称生成不同的图像。一旦图像以某个名称发布,就不应对其进行更改。