构建与制品管理58 条

AWS ECR 要点

托管容器镜像仓库:IAM 控制访问、生命周期策略自动清理、支持跨区域与跨账号复制,常用命令围绕 get-login-password 展开。

CI/CD 与发布速查开发更新于 2026-10-13

ECR 是什么

AWS 的托管容器镜像仓库:不用自建 registry,访问控制走 IAM,自带生命周期策略、跨区域与跨账号复制、镜像扫描。认证不用长期密码,而是 get-login-password 取短期令牌登录。中国区的端点域名体系与全球区不同(amazonaws.com.cn 后缀),配置时别混用。

基本信息

认证aws ecr get-login-password | docker login --username AWS --password-stdin <registry>
治理lifecycle policy 按 tag 前缀与保留数量自动清理
扫描基础扫描随推送触发;也可接 Inspector 做持续扫描
区域端点私有仓库按区域建端点,拉取方与仓库同区域延迟更低
复制跨区域复制配合多区域部署,就近拉取

典型使用场景

  • CI 推送镜像:流水线用 IAM 角色取短期令牌,不用长期密钥
  • 多账号隔离:各账号自有仓库,按仓库策略跨账号共享
  • 生命周期清理:按 tag 前缀与保留数量自动删除旧镜像
  • 多区域部署:复制到目标区域供就近拉取
  • 基础扫描:推送时触发漏洞扫描,结果在控制台查看

登录与推送

登录与推送
# 取短期令牌并登录,不要在配置里写长期密码
aws ecr get-login-password --region cn-north-1 | docker login --username AWS --password-stdin <account>.dkr.ecr.cn-north-1.amazonaws.com.cn
docker build -t app:1.8.0 .
docker tag app:1.8.0 <account>.dkr.ecr.cn-north-1.amazonaws.com.cn/app:1.8.0   # 打上仓库地址
docker push <account>.dkr.ecr.cn-north-1.amazonaws.com.cn/app:1.8.0

常见操作对照

操作机制说明
登录get-login-password + docker login令牌短期有效,任务开始前重新获取
建仓库create-repository仓库名与镜像名一一对应
清理lifecycle policy按前缀与保留数删除旧 tag
共享repository policy仓库级显式授权,别做账号级放权
跨账号共享镜像用仓库策略(repository policy)显式授权,避免整账号级放权。
令牌短期有效:CI 每次运行重新登录,不要把登录结果缓存跨任务复用。
私有仓库的镜像地址包含区域与账号:跨区域拉取先确认端点,复制没配置时不会自动同步。
基础扫描按仓库配置在推送时触发,持续复查要另行接入;两层都配上才算完整的扫描策略。

易错点

  • 只用基础扫描却当持续保障:新披露漏洞不会自动复查,接持续扫描或定期重扫
  • 生命周期策略写得激进:把正在回滚窗口内的旧镜像清掉,保留期覆盖回滚需求
  • 按 latest 管理生产镜像:被覆盖后无法追溯与回滚,生产用不可变 tag
  • 任务中途令牌过期:长任务推送失败,登录放在推送前而不是流水线最开始
  • 删除仓库前不查引用:下游拉取还在用该镜像时直接失败,删除前确认引用面

数据来源与参考

  • AWS 文档《Amazon ECR》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌