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 每次运行重新登录,不要把登录结果缓存跨任务复用。
私有仓库的镜像地址包含区域与账号:跨区域拉取先确认端点,复制没配置时不会自动同步。
基础扫描按仓库配置在推送时触发,持续复查要另行接入;两层都配上才算完整的扫描策略。