如何使用docker buildx为多架构镜像重打标签并推送新标签镜像?
使用Docker BuildX为多架构镜像重打标签并推送新标签
要仅通过Docker BuildX完成多架构镜像的重打标签并推送新标签操作,无需重新构建镜像,你可以使用docker buildx imagetools create命令——这是专门用于操作多架构镜像manifest的工具,直接在镜像仓库层面完成标签关联,无需本地拉取完整镜像。
具体命令
# 先登录私有镜像仓库(如果需要认证) docker login {registry name} # 为已有多架构镜像创建新标签并推送(本质是在仓库中关联manifest) docker buildx imagetools create -t {registry name/repository}/imagename-final {registry name/repository}/imagename-test
命令说明
docker buildx imagetools create:直接基于现有远程多架构镜像的manifest,创建新的标签引用-t {新标签}:指定要创建的新镜像标签{原镜像标签}:作为源镜像,命令会将该标签对应的所有架构manifest关联到新标签- 执行后仅新标签会在仓库中生成,原标签
imagename-test不受影响,也不会重复推送原标签的镜像
为什么你之前的命令无效?
你使用的docker buildx build是镜像构建命令,加上--pull会拉取基础镜像重新执行构建流程,同时指定两个--tag参数会推送两个标签的构建产物,这完全不是"重打标签"的操作逻辑,而是重新构建并推送两个版本的镜像。
额外说明
如果需要先将多架构镜像拉取到本地验证,也可以先执行:
docker buildx imagetools pull {registry name/repository}/imagename-test
再用imagetools create创建新标签,但直接操作远程仓库是更高效的方式。
内容的提问来源于stack exchange,提问作者bluebud
相关产品推荐
相关产品推荐

