在 Docker 中是否有办法维护(可更新和可跟踪)图像的“别名”?

在 Docker 中是否有办法维护(可更新和可跟踪)图像的“别名”?

在一个对某些 Docker 镜像有多个引用的项目中,我想提供一种可版本控制(即可 git 跟踪)的方式来使用 Docker 镜像的通用名称。

目前,在现有项目的几个地方,我引用了一些 Bash/Python 脚本、Docker 文件或 Jenkins 文件,例如busybox:latest。现在我想使用可读的名称独特的图像没有冗余。

据我所知,我可以使用我自己的注册表,提供一个可读的标签,然后只使用该标签或正确的 repo-digest:

docker pull busybox:latest
docker tag busybox:latest my_registry/busybox:default
docker push my_registry/busybox:default

# use
docker pull busybox@sha256:dca712...86b  <- has to be maintained manually
# or
docker pull my_registry/busybox:default <- not updateable or not unique for given commit

但现在我也希望后面的不同sha1s也是可更新git 可跟踪(无需到处重复写入 sha)。也许我使用的措辞不正确,但我需要的可以通过使用包含某种“别名”的文本文件来实现,例如

docker_aliases.txt

my_registry/busybox_default sha256:dafhs3ca712...3486b
my_registry/ubuntu-20.04 sha256:6a507907bd4e...a50

然后它可以以某种方式与所有涉及拉取镜像的 Docker 调用一起使用,并允许我

  • 用作my_registry/busybox_default图像说明符全部地点
  • 更新这些别名的地方
  • 可以通过 git 进行跟踪(非常重要)

感觉每个维护较大 CI 的人都应该会遇到这个问题。有没有通用的解决方案?

答案1

创建一个 Dockerfile,只需一个FROM指向您要使用的镜像的指令。使用 git 跟踪它。始终将其构建到相同的标签。在任何地方都使用该标签。

  • 到处都使用相同的图像标签
  • 在 Dockerfile 中进行更新
  • git 跟踪更改

docker tag或者,使用必要的shell 脚本。您甚至可以从 git hook 触发它。

相关内容