Docker Hub 与私有仓库
Docker Hub
Docker Hub 是 Docker 官方的公共镜像仓库,也是全球最大的容器镜像托管平台。
Docker Hub 的功能
# 搜索镜像
docker search nginx
docker search --filter=stars=100 nginx
# 拉取镜像
docker pull nginx:latest
docker pull library/nginx:1.24
# 推送镜像(需要登录)
docker login
docker push myusername/myapp:latest
Docker Hub 镜像类型
| 类型 | 标识 | 用途 |
|---|---|---|
| Official Images | nginx、node |
Docker 官方维护的基础镜像 |
| Verified Publisher | bitnami/nginx |
经过认证的发布者 |
| Community | username/myapp |
个人或组织发布 |
Docker Hub 限制(免费版)
# 拉取频率限制
# 匿名用户:100 次/6 小时
# 登录用户:200 次/6 小时
# 付费用户:无限制
私有仓库方案对比
| 方案 | 托管模式 | 费用 | 安全功能 | 推荐场景 |
|---|---|---|---|---|
| Docker Hub | 公有云 | 免费/付费 | 基础 | 个人/小型团队 |
| Harbor | 自建 | 开源免费 | 丰富 | 企业 |
| GitLab Container Registry | 云/自建 | 免费/付费 | 集成 CI | 使用 GitLab 的团队 |
| Amazon ECR | 云服务 | 按量付费 | AWS 集成 | AWS 用户 |
| Azure Container Registry | 云服务 | 按量付费 | Azure 集成 | Azure 用户 |
| Google Artifact Registry | 云服务 | 按量付费 | GCP 集成 | GCP 用户 |
| GitHub Container Registry | 云服务 | 包含在 GitHub | 集成 GitHub | GitHub 用户 |
| Nexus | 自建 | 开源免费 | 管理功能多 | 已有 Nexus 的团队 |
Harbor
Harbor 是 CNCF 毕业项目,企业级容器镜像仓库:
安装 Harbor
# 下载安装包
wget https://github.com/goharbor/harbor/releases/download/v2.8.0/harbor-offline-installer-v2.8.0.tgz
tar xzf harbor-offline-installer-v2.8.0.tgz
cd harbor
# 配置
cp harbor.yml.tmpl harbor.yml
# 修改 hostname、证书、密码等
# 安装
./install.sh
Harbor 功能
# 镜像管理
docker tag myapp:latest harbor.example.com/library/myapp:1.0
docker push harbor.example.com/library/myapp:1.0
# 漏洞扫描(内置 Trivy)
# Harbor 自动扫描推送的镜像
# 镜像复制
# 配置复制规则自动同步到其他 Harbor
GitLab Container Registry
集成在 GitLab 中的镜像仓库:
# .gitlab-ci.yml 集成
build:
stage: build
image: docker:latest
services:
- docker:dind
script:
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
only:
- main
AWS ECR
# 登录
aws ecr get-login-password --region us-east-1 | \
docker login --username AWS --password-stdin 123456789.dkr.ecr.us-east-1.amazonaws.com
# 创建仓库
aws ecr create-repository --repository-name myapp
# 推送
docker tag myapp:latest 123456789.dkr.ecr.us-east-1.amazonaws.com/myapp:latest
docker push 123456789.dkr.ecr.us-east-1.amazonaws.com/myapp:latest
多仓库策略
组合使用
# 开发环境:Docker Hub
docker pull node:18-alpine
# 构建后推送到私有仓库
docker tag myapp:dev internal-registry:5000/team-a/myapp:dev
docker push internal-registry:5000/team-a/myapp:dev
# 发布到生产仓库
docker tag myapp:dev prod-registry:5000/myapp:1.2.3
docker push prod-registry:5000/myapp:1.2.3
镜像同步策略
# Harbor 复制规则示例
apiVersion: goharbor.io/v1alpha1
kind: ReplicationRule
metadata:
name: sync-to-dr
spec:
filters:
- type: name
value: "library/*"
trigger:
type: event_based
settings:
creation: true
deletion: false
destination:
registry: dr-registry
namespace: backup
镜像清理策略
# Docker Hub
# 仓库设置 → 自动删除旧版本
# Harbor
# 设置保留策略
# 保留最近 10 个版本,删除 90 天前的镜像
# 手动清理
docker image prune -a --filter "until=24h"
选择私有仓库的考虑因素
- 安全性:是否需要镜像扫描、签名、访问控制
- 集成度:是否与现有 CI/CD、认证系统集成
- 合规性:数据必须存储在指定地理位置
- 性能:拉取速度、并发支持
- 成本:自建 vs 托管服务的费用
- 运维:团队是否有能力和精力维护
Docker Hub 适合个人和小型团队快速开始,企业生产环境应选择 Harbor 或云服务商的托管镜像仓库。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END


暂无评论内容