如何标记多架构docker镜像并推送新标记的镜像?

blu*_*bud 6 docker docker-image docker-push docker-tag buildx

我正在尝试通过 docker 命令实现 docker 图像的重新标记。

基本上我需要执行以下步骤来实现我的目标:

1)从私有注册表中提取现有的多架构映像。

2)用新名称标记它(例如:将 imagename-test 标记为 imagename-final)

3)并将新标记的镜像再次推送回私有注册表。

所以我尝试了以下命令:

docker buildx build --tag {registry name/repository}/imagename-test --tag {registry name/repository}/imagename-final \
-- pull -- platform=linux/amd64,linux/arm64 \
-- push .
Run Code Online (Sandbox Code Playgroud)

这里,图像是用两个标签推送的。但是我需要将 imagename-test 标记为 imagename-final,并且只需要将 imagename-final 推送到注册表。

通常我们这样做,

docker pull imagename-test
docker tag imagename-test imagename-final
docker push imagename-final
Run Code Online (Sandbox Code Playgroud)

有什么建议可以通过仅使用多架构映像的 docker buildx 命令来实现此目的吗?

jen*_*ros 5

您可以使用docker buildx imagetools重新标记图像索引,即:

docker buildx imagetools create -t imagename-final imagename-test
Run Code Online (Sandbox Code Playgroud)

有关 imagetools 创建的更多信息请点击此处