harbor代理缓存是规避公网拉包熔断的核心手段,通过首次代理拉取并本地缓存docker hub镜像,后续请求直接走内网返回200,不触达外网;需创建代理缓存项目、配置上游源(如https://docker.m.daocloud.io)、启用代理模式,并用新镜像手动触发首次拉取验证缓存生效。

用 Harbor 配置 Docker Hub 代理缓存
这是企业最常用也最稳妥的方式,Harbor 原生支持代理缓存项目,能自动拉取+缓存+鉴权+扫描。
- 登录 Harbor 控制台 → 【系统管理】→【仓库管理】→【+ 新建代理缓存仓库】
- 源地址填国内可用的镜像源,例如:https://docker.m.daocloud.io(DaoCloud 镜像站)或 https://registry-1.docker.io(需配合 Harbor 2.8+ 及有效 Docker Hub 账户)
- 项目名建议统一为 dockerhub,后续拉取命令就写成
docker pull harbor.example.com/dockerhub/nginx:alpine - 务必在项目设置中开启 “代理缓存” 并确认上游源可连通(测试按钮会发起 HEAD 请求)
- 首次拉取时 Harbor 会自动从上游拉取并存入本地存储,后续同名镜像直接返回 200,不触达外网
用原生 Registry 搭建轻量代理缓存
适合资源有限、只需基础缓存能力的中小团队,不依赖 UI 和高级功能。
FastAPI + Flask 混合部署最佳实践,解决路由定义、API 代理等常见问题,适用于同时运行 FastAPI API 与 Flask 前端的场景。
- 启动命令中必须显式启用 proxy 模式,并指定 upstream:
docker run -d -p 5000:5000 --name registry-cache \-e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \-e REGISTRY_PROXY_USERNAME=your_dockerhub_user \-e REGISTRY_PROXY_PASSWORD=your_token_or_password \-v /data/registry-cache:/var/lib/registry \registry:2- 注意:Registry 默认不校验上游证书,若用自签名或中间件拦截 HTTPS,需挂载 ca.crt 并配置
REGISTRY_HTTP_TLS_CA - 客户端无需改 daemon.json,直接
docker pull your-registry:5000/library/ubuntu:22.04即可触发缓存逻辑
客户端级镜像加速(临时兜底方案)
当无法部署服务端缓存时,可在每台机器上做最小化适配,缓解但不能根治熔断问题。
- 编辑
/etc/docker/daemon.json,加入国内镜像地址(至少两个备用): { "registry-mirrors": ["https://docker.m.daocloud.io", "https://hub-mirror.c.163.com"] }- 保存后执行
sudo systemctl restart docker - 该方式仅作用于
docker pull的初始发现阶段,不缓存镜像层,也不解决 Docker Hub 登录态限频(如 TOOMANYREQUESTS) - 适合 CI 构建节点临时提速,但不能替代私有代理缓存
hello-world:latest)手动触发一次完整拉取,并检查 Harbor 后台或 Registry 日志里是否有 proxy.cache.hit 或 cache miss → fetching 记录。










