Skip to content
返回部署

容器镜像仓库

存储分发 Docker 镜像 — Docker Hub、ECR、GCR、GHCR、Harbor。

容器进阶

为什么

容器镜像仓库存版本化镜像供部署。云仓库(ECR、GCR)集成云认证,Harbor 加漏洞扫描和复制。

Docker is used by 59% of professional developers per the Stack Overflow 2024 survey,Kubernetes 在生产中运行 60% 的容器化工作负载(CNCF 2024 调查)。容器编排通过声明式滚动发布将部署相关事故减少 35%。

何时使用

云部署用云仓库(ECR/GCR/GHCR),自托管带扫描用 Harbor。私有避免 Docker Hub(限速)。

如何做

1. 创建 — 云 CLI 或 web 控制台 2. 认证 — docker login 配 token/凭证 3. 标记 — docker tag app:latest registry/app:v1 4. 推送 — docker push registry/app:v1 5. 拉取 — docker pull registry/app:v1 6. 扫描 — trivy 或仓库内置扫描 7. 清理 — 生命周期策略删旧

示例

# AWS ECR aws ecr get-login-password | docker login --username AWS --password-stdin $acct.dkr.ecr.us-east-1.amazonaws.com docker tag app:latest $acct.dkr.ecr.us-east-1.amazonaws.com/app:v1 docker push $acct.dkr.ecr.us-east-1.amazonaws.com/app:v1 # GitHub 容器仓库 echo $GH_TOKEN | docker login ghcr.io -u USERNAME --password-stdin docker tag app:latest ghcr.io/user/app:v1 docker push ghcr.io/user/app:v1 # trivy 扫描 trivy image ghcr.io/user/app:v1 # ECR 生命周期策略(7 天后删无标签) aws ecr put-lifecycle-policy --repository-name app --policy-text file://policy.json

常见问题

  • ⚠Docker Hub 限速 — 匿名 100 拉/6h,用认证或云仓库
  • ⚠旧镜像累积 — 无生命周期策略,设清理规则
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓用不可变标签(git SHA 或 semver)— 非 latest,确保可复现部署
  • ✓设生命周期策略 — 自动删旧无标签镜像,省存储成本
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答