Skip to content
返回云服务

AWS ECR:面向 ECS/EKS 的托管容器仓库

在 AWS ECR 上存储部署 Docker 镜像,含 IAM 认证、生命周期策略和跨区复制。

Docker 托管进阶

为什么

ECR 通过 IAM 任务执行角色原生集成 ECS/EKS——无需单独轮换仓库凭证。生命周期策略自动删旧镜像,跨区复制降低全球部署拉取延迟。

Docker is used by 59% of professional developers per the Stack Overflow 2024 survey。Docker Hub 有 1500 万以上公共镜像,OCI 镜像规范采用意味着容器在 Docker、Podman 和 containerd 上一致运行。

何时使用

在 ECS、EKS 或 Fargate 上运行且想要 IAM 认证时用,或需要跨区复制做全球拉取时用。生产环境避免 Docker Desktop(250+ 员工许可证需付费)— 使用 containerd 或 Podman。

单二进制 Go/Rust 应用跳过 Docker — 静态二进制 + systemd 更简单。

如何做

1. Assess your workload requirements — compute, memory, storage, latency 2. Compare providers on price, region availability, and managed services 3. 创建仓库 `aws ecr create-repository --repository-name myapp`。登录 `aws ecr get-login-password | docker login --username AWS --password-stdin <acct>.dkr.ecr.<region>.amazonaws.com`。标签 `<acct>.dkr.ecr.<region>.amazonaws.com/myapp:tag`,推送。加生命周期策略 JSON 保留最近 10 镜像。ECS 任务定义引用镜像 URI;任务执行角色需 ecr:GetDownloadUrlForLayer 和 ecr:BatchGetImage。跨区在仓库设置配复制。 4. Set up IaC (Terraform/Pulumi) to provision resources 5. Configure monitoring, alerts, and cost budgets before going live

示例

# 登录并推送 AWS_ACCT=123456789012; REGION=us-east-1 aws ecr get-login-password --region \${REGION} | \ docker login --username AWS --password-stdin \ \${AWS_ACCT}.dkr.ecr.\${REGION}.amazonaws.com docker push \${AWS_ACCT}.dkr.ecr.\${REGION}.amazonaws.com/myapp:1.0 # 生命周期策略:保留最近 10 个,未标签 1 天后删 cat > lifecycle.json <<'EOF' { "rules": [{ "rulePriority": 1, "description": "保留 10", "selection": { "tagStatus": "any", "countType": "imageCountMoreThan", "countNumber": 10 }, "action": { "type": "expire" } }] } EOF aws ecr put-lifecycle-policy --repository-name myapp --lifecycle-policy-text file://lifecycle.json

常见问题

  • ⚠ECR 登录令牌 12h 过期——CI 中途失败;每次推送前刷新。
  • ⚠忘记生命周期策略导致 $0.10/GB-月 存储膨胀,旧镜像积年。
  • ⚠跨区复制翻倍存储成本;仅对有实际拉取流量的区域启用。

最佳实践

  • ✓创建时即附生命周期策略——保留 10-20 标签+未标签 1 天过期。
  • ✓用不可变标签(aws ecr put-image-tag-mutability --image-tag-mutability IMMUTABLE)防覆盖。
  • ✓推送时扫描(aws ecr put-image-scanning-configuration);CI 对 CRITICAL 发现失败。

常见问题解答

什么是AWS ECR:面向 ECS/EKS 的托管容器仓库?它解决什么问题?

在 AWS ECR 上存储部署 Docker 镜像,含 IAM 认证、生命周期策略和跨区复制。 它可帮助开发者在不自建基础设施的前提下完成部署、存储与扩展,是云服务选型的核心参考。

如何在 5 分钟内上手AWS ECR:面向 ECS/EKS 的托管容器仓库?

两步即可跑通:① Assess your workload requirements — compute, memory, storage, latency;② Compare providers on price, region availability, and managed services。建议先用免费套餐验证流程,再接入生产环境。

AWS ECR:面向 ECS/EKS 的托管容器仓库 最容易踩的坑是什么?

最高频的问题是:ECR 登录令牌 12h 过期——CI 中途失败;每次推送前刷新。。建议在上线前用 checklist 逐项核对,并在 CI 中加入策略与配置扫描。

AWS ECR:面向 ECS/EKS 的托管容器仓库 的最佳实践有哪些?

AWS ECR:面向 ECS/EKS 的托管容器仓库 的最佳实践包括:创建时即附生命周期策略——保留 10-20 标签+未标签 1 天过期。;用不可变标签(aws ecr put-image-tag-mutability --image-tag-mutability IMMUTABLE)防覆盖。;推送时扫描(aws ecr put-image-scanning-configuration);CI 对 CRITICAL 发现失败。。其中首条「创建时即附生命周期策略——保留 10-20 标签+未标签 1 天过期。」应作为团队默认规范写入 IaC 模板。

AWS ECR:面向 ECS/EKS 的托管容器仓库 如何控制成本与避免账单意外?

三招防超支:① 为所有资源打 env/team 标签并启用账单告警;② 用预算阈值触发 Slack/邮件通知;③ 定期用 Cost Explorer 审查闲置资源并清理。AWS ECR:面向 ECS/EKS 的托管容器仓库 多数提供免费套餐,先在免费额度内验证再放量。