Docker 设置限制(限制,修复)镜像版本标签来拉取(FROM)只有一个具体的主要版本号

Docker set limit (restrict, fix) image version tag to pull (FROM) only one concrete major release version number

如何在 Dockerfile 中编写 FROM 语句以从特定主要版本中提取最新图像。 假设有一个应用程序当前具有三个主要版本:v1.7、v2.5、v3.0.5,我希望始终拥有最新版本的图像 v2。如果我放入 Dockerfile 语句:

FROM imagename:latest

然后我将获得构建版本 3.0.5,因为它是最新版本。如果我输入:

FROM imagename:2.5

然后我将获得确切的 2.5 版本,但是一旦 2.6 版本可用,我将无法使用此语句更新图像。

如何设置 FROM 语句,使其始终获得最新的版本 2 更新,不会破坏向后兼容性并坚持使用该主要版本 2。?

Docker 图片标签(包括 Dockerfile FROM 行和 docker run 图片)总是完全匹配。作为推论,一旦 Docker 认为它在本地有一个特定的图像,它就不会尝试再次获取它,除非明确指示。

许多常见的 Docker 图片都有在多个标签下发布同一图片的惯例,这反映了您的建议。例如,在撰写本文时,standard python imagepython:latestpython:3python:3.7python:3.7.0python:3.7.0-stretch 都指向相同的图像。如果你说 FROM python:3 你会得到这张图片。但是,如果您已经有了那个图像,并且发布了 Python 3.8,并且您没有先明确地执行 docker pull 就进行了重建,那么您将使用已经拥有的相同图像(Python 3.7一)。如果你这样做 docker pull python:3 那么你会得到更新的图像,但你必须知道这样做(或者告诉你的 CI 工具为你做)。