Docker 镜像代理项目推荐
是的,有几个开源项目可以实现你描述的功能:输入 Docker 镜像仓库链接(例如 nginx:latest),然后生成一个新的代理地址(例如 your-harbor.com/proxy-project/nginx:latest),让你直接用 docker pull 拉取。这个过程通常是通过设置代理仓库(proxy cache),镜像会从原仓库(如 Docker Hub)拉取并缓存到你的代理中,避免网络限制和限速。以下推荐最匹配的开源项目 Harbor(由 VMware 开源),它有 Web UI,支持一键配置代理,并生成标准化的新拉取地址。其他备选也会简要说明。
1. Harbor(推荐,功能最全,有 Web UI)
Harbor 是一个开源的容器镜像仓库,支持 proxy cache 模式,能代理 Docker Hub 等上游仓库。设置后,你可以通过 Web UI 或 API 输入/浏览原镜像,生成带前缀的新 URL。首次拉取时,它会自动从上游下载并缓存,后续直接从本地提供。
-
核心功能:
- 生成代理 URL:创建 proxy 项目后,新地址格式为
<你的 Harbor 地址>/<proxy 项目名>/<原镜像名:标签>。例如,原library/nginx:latest变成harbor.example.com/proxy-hub/library/nginx:latest。 - Web UI 支持:登录 Web 界面,浏览 proxy 项目,能看到缓存的镜像列表,无需手动输入 URL 即可复制新拉取命令。
- API 支持:通过 REST API 查询镜像并生成 URL(例如 GET
/api/v2.0/projects/proxy-hub/repositories/library/nginx/artifacts)。 - 其他:扫描漏洞、限速规避、HTTPS 支持、多仓库代理。
- 生成代理 URL:创建 proxy 项目后,新地址格式为
-
快速设置步骤(基于 Docker Compose,5-10 分钟):
- 下载 Harbor:
git clone https://github.com/goharbor/harbor && cd harbor。 - 编辑
harbor.yml:设置 hostname(你的域名/IP)、HTTPS(可选,自签名证书)。 - 安装依赖:
./install.sh(自动拉起 PostgreSQL、Redis 等)。 - 登录 Web UI(默认 admin/Harbor12345),创建新项目:
- 项目类型选 Proxy Cache。
- 选择上游仓库:新建 endpoint 为 Docker Hub(URL:
https://registry-1.docker.io)。
- 生成新地址:例如项目名为
proxy-hub,则拉取命令:docker pull harbor.example.com/proxy-hub/nginx:latest(它会自动代理原nginx:latest)。 - 配置 Docker 客户端(可选,全局代理):在
/etc/docker/daemon.json加"registry-mirrors": ["https://harbor.example.com/proxy-hub"],重启 Docker。
- 下载 Harbor:
-
优点:免费开源、UI 友好、缓存自动、支持 Kubernetes。缺点:需自建服务器(最低 2GB RAM)。
-
下载/文档:GitHub goharbor/harbor,官方文档 Proxy Cache 配置。
2. Sonatype Nexus Repository OSS(备选,轻量级)
另一个开源选项,支持 Docker proxy 仓库。设置后,类似 Harbor,用 <nexus 地址>/<仓库名>/<原镜像> 作为新 URL。没有专用 Web UI 生成 URL,但 UI 可浏览仓库并复制命令。
-
设置简述:
- 下载 Nexus OSS:
docker run -d -p 8081:8081 sonatype/nexus3。 - 登录 UI(admin/admin123),创建 docker (proxy) 仓库,远程存储 URL 设为
https://registry-1.docker.io。 - 新地址示例:
nexus.example.com/docker-hub/nginx:latest。 - 拉取:
docker pull nexus.example.com/docker-hub/nginx:latest(自动缓存)。
- 下载 Nexus OSS:
-
优点:简单,集成 Maven 等。缺点:UI 不如 Harbor 直观,无一键 API 生成 URL。
3. rpardini/docker-registry-proxy(备选,纯代理,无 UI)
这是一个轻量 HTTPS 代理容器,集中管理认证和缓存。但它不是生成“新 URL”,而是透明代理(设置环境变量后,原 docker pull 命令自动走代理)。适合无 UI 需求。
- 设置:
docker run -p 3128:3128 rpardini/docker-registry-proxy,配置HTTPS_PROXY=http://localhost:3128,安装 CA 证书。 - 缺点:无 URL 生成功能,拉取仍用原命令。
- GitHub: rpardini/docker-registry-proxy。
注意事项
- 网络环境:这些项目需部署在有外网的服务器上(VPS),然后你的本地 Docker 配置镜像加速或直接用新 URL 拉取。
- 限速规避:Harbor 等能缓存 manifest,避免 Docker Hub 拉取限制(100 次/6 小时)。
- 测试:先用 Harbor 的在线 demo(goharbor.io)试拉取,确认效果。
- 如果你需要纯 CLI 工具(无服务器),目前开源中没有完美匹配;可以结合
skopeo(CLI 复制镜像)脚本模拟,但不优雅。
如果这些不完全匹配你的场景(例如要纯 Web 工具无部署),提供更多细节我可以再搜!