Harbor 是最实用的企业级代理缓存方案,支持原生 Proxy Cache 模式,实测重复拉取耗时从 192 秒降至 8.3 秒;三步即可部署:配置上游、设定 regex 缓存策略、分配资源;客户端通过 daemon.json 配置 registry-mirrors 实现无感切换;需定期监控命中率与存储占用并清理。

配置代理缓存加速团队内部镜像拉取,核心是让本地请求优先走内网缓存,而不是反复穿透公网拉取。关键不在于“换源”,而在于构建一层可控、可复用、带策略的中间缓存层。
选型:Harbor 是当前最实用的企业级代理缓存方案
相比 Nginx 反向代理或裸 Registry,Harbor 原生支持代理缓存模式(Proxy Cache),无需额外开发或复杂路由规则,且自带权限控制、漏洞扫描和 UI 管理界面。某金融团队实测显示,启用 Harbor 代理缓存后,重复镜像拉取平均耗时从 192 秒降至 8.3 秒,同时规避了因 Docker Hub 临时不可达导致的 CI 中断问题。
- 它不是简单地“镜像”Docker Hub,而是按需拉取、按层缓存、自动去重
- 支持设置缓存过期时间(cache_ttl)、最大缓存大小(cache_size)和匹配策略(如 regex 只缓存 alpine、nginx 等高频基础镜像)
- 上游可配置多个 Registry(如 docker.io + gcr.io),故障时自动切换
部署:三步完成代理缓存服务上线
以 Harbor v2.10+ 为例,最小化部署只需修改 harbor.yml 并启动:
- 启用代理模式:在 proxy 区块下填写上游地址,例如
- url: https://registry-1.docker.io - 设定缓存策略:推荐初期设为
cache_policy: regex,配合正则表达式^library/(alpine|ubuntu|nginx|redis)$,避免缓存大量冷门镜像占满磁盘 - 分配合理资源:
cache_size: 150(单位 GB),cache_ttl: 72(小时),适配百人团队日常用量
保存后执行 ./install.sh --with-chartmuseum 完成安装。服务启动后,所有客户端只需将 docker pull 目标指向 Harbor 地址(如 harbor.internal/library/nginx:1.25),首次拉取自动回源并缓存,后续请求直接响应。
客户端:统一配置,避免手动指定地址
团队成员不应每次 pull 都写完整 Harbor 地址。正确做法是通过 Docker daemon 配置,把 Harbor 设为默认代理入口:
- 编辑
/etc/docker/daemon.json,添加"registry-mirrors": ["https://harbor.internal"] - 若 Harbor 使用自签名证书,需将 CA 证书复制到
/etc/docker/certs.d/harbor.internal:443/ca.crt - 重启 Docker:
sudo systemctl restart docker
此后,执行 docker pull nginx:1.25 实际请求会自动被重定向至 harbor.internal/library/nginx:1.25,用户无感知,运维有掌控。
运维:定期清理与监控不可少
代理缓存不是“一劳永逸”。需建立轻量运维习惯:
- 每月执行一次
harbor-core日志分析,查看proxy.cache.hit_rate指标,低于 70% 说明缓存策略需优化 - 用 Harbor UI 的「系统管理 → 系统日志」追踪回源失败记录,及时检查上游 Registry 可用性
- 结合
docker system df -v和 Harbor 存储目录使用量,当缓存占用超 85% 时,触发./prepare --with-clair --with-notary清理脚本


















