私有镜像仓库实战
在容器化工作流中,私有仓库是保护核心资产、加速内网分发以及实现 CI/CD 自动化的关键基础设施。本章节将带你从最简单的 Registry 搭建到企业级 Harbor 的全面实战。
为什么需要私有仓库?
- 安全性: 避免核心镜像暴露在公网 Docker Hub。
- 下载速度: 内网/专线拉取镜像,速度提升 10 倍以上。
- 版本控制: 灵活管理业务镜像的 Tag 与清理策略。
1. 轻量级方案:Docker Registry (v2)
如果你只需要一个极简的存储点,官方提供的 registry 镜像是最快的选择。
1.1 快速启动
docker run -d \
-p 5000:5000 \
--name registry \
-v /opt/registry:/var/lib/registry \
registry:21.2 配置 Basic Auth 认证
默认的 Registry 没有任何权限控制,在生产环境这非常危险。
▶ 配置 HTTP 认证步骤
- 生成密码文件:
mkdir auth docker run --entrypoint htpasswd httpd:2.4 -Bbn susu password123 > auth/htpasswd - 带认证启动:
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 安装流程
-
下载安装包:
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 -
配置 harbor.yml: 修改
hostname和https相关证书路径:hostname: hub.susu.local http: port: 80 https: port: 443 certificate: /data/cert/server.crt private_key: /data/cert/server.key -
运行安装脚本:
./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 下载并持久化缓存。