Docker Hub 与私有仓库

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 nginxnode 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"

选择私有仓库的考虑因素

  1. 安全性:是否需要镜像扫描、签名、访问控制
  2. 集成度:是否与现有 CI/CD、认证系统集成
  3. 合规性:数据必须存储在指定地理位置
  4. 性能:拉取速度、并发支持
  5. 成本:自建 vs 托管服务的费用
  6. 运维:团队是否有能力和精力维护

Docker Hub 适合个人和小型团队快速开始,企业生产环境应选择 Harbor 或云服务商的托管镜像仓库。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容