私有镜像仓库实战

在容器化工作流中,私有仓库是保护核心资产、加速内网分发以及实现 CI/CD 自动化的关键基础设施。本章节将带你从最简单的 Registry 搭建到企业级 Harbor 的全面实战。

ℹ️ 为什么需要私有仓库?
  1. 安全性: 避免核心镜像暴露在公网 Docker Hub。
  2. 下载速度: 内网/专线拉取镜像,速度提升 10 倍以上。
  3. 版本控制: 灵活管理业务镜像的 Tag 与清理策略。

1. 轻量级方案:Docker Registry (v2)

如果你只需要一个极简的存储点,官方提供的 registry 镜像是最快的选择。

1.1 快速启动

docker run -d \
  -p 5000:5000 \
  --name registry \
  -v /opt/registry:/var/lib/registry \
  registry:2

1.2 配置 Basic Auth 认证

默认的 Registry 没有任何权限控制,在生产环境这非常危险。

配置 HTTP 认证步骤
  1. 生成密码文件:
    mkdir auth
    docker run --entrypoint htpasswd httpd:2.4 -Bbn susu password123 > auth/htpasswd
  2. 带认证启动:
    docker run -d \
      -p 5000:5000 \
      --name registry \
      -v $(pwd)/auth:/auth \
      -e "REGISTRY_AUTH=htpasswd" \
      -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
      -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
      -v /opt/registry:/var/lib/registry \
      registry:2

2. 企业级方案:Harbor 部署实战

Harbor 提供了图形化界面、RBAC 权限管理、漏洞扫描以及镜像签名等企业特性。

  • CPU: 2 核以上
  • 内存: 4GB 以上
  • 磁盘: 40GB 以上 (根据镜像数量增加)
  • 已安装 Docker 20.10+
  • 已安装 Docker Compose v2.0+
  • 已获取 SSL 证书 (推荐使用 Let’s Encrypt 或自签名)

2.1 安装流程

  1. 下载安装包:

    wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz
    tar xvf harbor-offline-installer-v2.10.0.tgz
    cd harbor
  2. 配置 harbor.yml: 修改 hostnamehttps 相关证书路径:

    hostname: hub.susu.local
    http:
      port: 80
    https:
      port: 443
      certificate: /data/cert/server.crt
      private_key: /data/cert/server.key
  3. 运行安装脚本:

    ./install.sh --with-trivy --with-chartmuseum

3. 安全与加速技巧

3.1 信任非 HTTPS 仓库 (不推荐)

如果你在内网测试且没有证书,需要在每一台客户端的 /etc/docker/daemon.json 中配置:

{
  "insecure-registries": ["my-registry.local:5000"]
}

3.2 自建 Registry Proxy Cache

为了应对 Docker Hub 的网络限制,你可以自建缓存代理:

配置代理模式

registry 的配置文件或环境变量中加入:

proxy:
  remoteurl: https://registry-1.docker.io
  username: [USERNAME]
  password: [PASSWORD]

这样客户端拉取 my-proxy:5000/nginx 时,私有仓库会自动从 Hub 下载并持久化缓存。


4. 结业练习

Navigation