You need to enable JavaScript to run this app. 如何通过Bamboo从已认证registry拉取Docker镜像到指定ECR仓库?
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Bamboo从已认证registry拉取Docker镜像到指定ECR仓库?

Bamboo从带认证的Nexus3镜像仓库同步镜像到AWS ECR 实现方案

前置校验(你已完成的配置可跳过对应项)

  • 确认Bamboo Agent已安装Docker、AWS CLI,且Docker服务处于正常运行状态
  • 确认你已配置的ECR相关变量可用:包括ECR仓库地址、AWS区域、AWS访问凭据(或Agent已绑定有权限的IAM角色)
  • 提前在Bamboo的加密变量中配置Nexus3的访问信息:NEXUS_REGISTRY_ADDR(Nexus镜像仓库地址)、NEXUS_USER(拉取权限账号)、NEXUS_PWD(账号密码,需设置为加密隐藏类型)

核心实现流程

1. 可选:Nexus3非HTTPS场景的预配置

如果你的Nexus3镜像仓库用的是HTTP协议,需要提前在所有Bamboo Agent节点的Docker配置中添加信任:

  • 修改Docker配置文件/etc/docker/daemon.json,新增配置:
{
  "insecure-registries": ["你的Nexus3仓库地址"]
}
  • 执行systemctl daemon-reload && systemctl restart docker生效配置

2. Bamboo流水线任务编排

按顺序添加以下Shell类型任务即可:

  • 登录Nexus3镜像仓库
docker login ${NEXUS_REGISTRY_ADDR} -u ${NEXUS_USER} -p ${NEXUS_PWD}
  • 拉取Nexus3中的目标镜像,镜像名和标签可设置为Bamboo构建参数动态传入
docker pull ${NEXUS_REGISTRY_ADDR}/${IMAGE_NAME}:${IMAGE_TAG}
  • 为镜像打ECR仓库目标标签
docker tag ${NEXUS_REGISTRY_ADDR}/${IMAGE_NAME}:${IMAGE_TAG} ${ECR_REPO_ADDR}/${IMAGE_NAME}:${IMAGE_TAG}
  • 登录AWS ECR仓库
aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${ECR_REPO_ADDR}
  • 推送镜像到ECR目标仓库
docker push ${ECR_REPO_ADDR}/${IMAGE_NAME}:${IMAGE_TAG}
  • (推荐)清理本地镜像与登录凭据,避免Agent磁盘占用和凭据泄露
# 删除本地镜像
docker rmi ${NEXUS_REGISTRY_ADDR}/${IMAGE_NAME}:${IMAGE_TAG} ${ECR_REPO_ADDR}/${IMAGE_NAME}:${IMAGE_TAG}
# 退出两个镜像仓库的登录状态
docker logout ${NEXUS_REGISTRY_ADDR}
docker logout ${ECR_REPO_ADDR}

3. 结果校验(可选)

可以添加校验任务确认镜像推送成功:

docker manifest inspect ${ECR_REPO_ADDR}/${IMAGE_NAME}:${IMAGE_TAG}
# 命令返回0即代表镜像已存在于ECR仓库中

注意事项

如果Nexus3使用自签名SSL证书,需要提前将根证书导入Bamboo Agent节点的Docker信任证书目录,避免登录时证书验证失败
批量同步多镜像的场景,可以将需要同步的镜像名、标签列表存为单独的配置文件,在Shell任务中循环读取执行拉取、打标、推送逻辑即可
所有涉及账号密码的变量必须在Bamboo中设置为加密类型,禁止在任务日志中打印敏感信息

内容的提问来源于stack exchange,提问作者Low Tech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 01:45:06