无buildx环境下,如何为Docker镜像清单列表添加多标签?
批量给Docker清单列表添加标签的简便方法
核心思路
直接复用已有的latest清单列表的唯一标识(digest),给这个digest打新标签并推送,无需重复执行docker manifest create命令。
具体步骤
获取现有清单的Digest
先通过docker manifest inspect提取my_image:latest清单的digest,这里提供两种适配不同环境的方式:- 用
jq工具(推荐,解析更稳定):# 若Bitbucket Pipelines环境无jq,先安装:apt-get update && apt-get install -y jq MANIFEST_DIGEST=$(docker manifest inspect my_image:latest | jq -r '.config.digest') - 用grep+awk替代(无需额外安装工具):
MANIFEST_DIGEST=$(docker manifest inspect my_image:latest | grep -o '"digest": "[^"]*' | cut -d'"' -f4)
- 用
批量打新标签并推送
将需要添加的标签存入数组,循环执行打标签和推送操作,实现批量处理:# 定义需要添加的标签集合,可按需修改 TAGS=("build-123" "1.5" "stable") for TAG in "${TAGS[@]}"; do # 给清单的digest打新标签 docker tag my_image@${MANIFEST_DIGEST} my_image:${TAG} # 推送新标签到AWS ECR docker push my_image:${TAG} done
注意事项
- 确保已完成AWS ECR的登录操作(比如通过
aws ecr get-login-password | docker login --username AWS --password-stdin <account-id>.dkr.ecr.<region>.amazonaws.com),否则推送会失败。 - 该方法本质是给同一个清单对象添加多个引用标签,和重新创建清单的效果完全一致,且避免了重复指定多架构镜像的繁琐操作。
内容的提问来源于stack exchange,提问作者Campbell
相关产品推荐
相关产品推荐

