核心思路是部署内网中间层registry,首次拉取远程镜像时自动缓存各层,后续请求直接本地返回;相比单纯镜像源,代理缓存具备更强可控性、复用性与离线能力。

配置镜像加速代理缓存服务的核心思路
镜像加速代理缓存服务本质是部署一个本地或内网的中间层 Registry,它在首次拉取远程镜像(如 Docker Hub)时自动缓存各镜像层,后续相同请求直接从本地返回,避免重复走公网。相比单纯配置镜像源,代理缓存具备更强的可控性、复用性和离线能力。
使用 registry-proxy 搭建轻量代理
registry-proxy 是专为 Docker Registry 设计的反向代理,支持自动缓存、并发控制和健康检查,适合中小团队快速落地。
- 拉取并运行 proxy 容器(监听 8080 端口):
docker run -d \
--name registry-proxy \
-p 8080:8080 \
-e REGISTRY_PROXY_REMOTE_URL=https://registry-1.docker.io \
-e REGISTRY_PROXY_CACHE_BUST=false \
-v /data/proxy:/var/lib/registry-proxy \
-v /etc/ssl/certs:/etc/ssl/certs:ro \
--restart=always \
ghcr.io/cesanta/docker_auth:latest - 修改 Docker 守护进程配置(/etc/docker/daemon.json):
{
"registry-mirrors": ["http://localhost:8080"]
} - 重启 Docker:
sudo systemctl daemon-reload && sudo systemctl restart docker
用 Harbor 搭建企业级代理缓存仓库
Harbor 支持“代理缓存”项目类型,可作为上游 Registry 的只读镜像缓存节点,同时提供 UI、权限、扫描等完整功能。
- 在 Harbor Web 界面创建新项目,类型选 Proxy Cache
- 填写上游地址:
• Docker Hub:https://hub.docker.com
• 或直接填 registry 地址:https://registry-1.docker.io - 保存后,即可通过 harbor.example.com/proxy-cache/library/nginx 拉取镜像,首次拉取会缓存,后续秒级响应
- Docker 客户端配置中添加该 Harbor 地址到
registry-mirrors,或直接 push/pull 到该地址
关键配置与注意事项
无论采用哪种代理方案,以下细节直接影响缓存效果和稳定性:
- 确保代理服务能正常访问外网(尤其 DNS 解析和 TLS 证书验证),必要时配置
no_proxy和 CA 证书挂载 - 为缓存目录分配足够磁盘空间(建议 ≥100GB),定期清理旧层(Harbor 可设 GC 策略;registry-proxy 需手动清理
/var/lib/registry-proxy) - 生产环境务必启用 HTTPS —— 若代理服务暴露在公网,必须配置有效域名 + TLS 证书,否则 Docker 客户端拒绝连接
- 避免将多个不同用途的镜像源混配在同一
registry-mirrors数组中,Docker 会顺序尝试,失败后才换下一个,反而拖慢体验











