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

Shu*_*eng 1 cloud docker kubernetes dockerfile docker-registry

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

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

Sha*_*k V 5

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
Run Code Online (Sandbox Code Playgroud)

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

假设有一个名为“派生项目”的项目,它使用基础镜像 myBaseImage:latest

FROM myBaseImage:latest

<snipped>

CMD xyz
Run Code Online (Sandbox Code Playgroud)
docker build --pull -t myDerivedImage:<version of source code> .
Run Code Online (Sandbox Code Playgroud)

假设派生图像的标签基于它的源代码版本(例如 git commit hash),这是标记图像的最常用方法,如果在最新标签下发布了新的基础图像而派生项目没有变化, 派生工程的构建会在基础镜像改变前后产生同名不同的镜像。一旦以某个名称发布图像,就不应对其进行变异。