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 支持、多仓库代理。
  • 快速设置步骤(基于 Docker Compose,5-10 分钟):

    1. 下载 Harbor:git clone https://github.com/goharbor/harbor && cd harbor
    2. 编辑 harbor.yml:设置 hostname(你的域名/IP)、HTTPS(可选,自签名证书)。
    3. 安装依赖:./install.sh(自动拉起 PostgreSQL、Redis 等)。
    4. 登录 Web UI(默认 admin/Harbor12345),创建新项目:
      • 项目类型选 Proxy Cache
      • 选择上游仓库:新建 endpoint 为 Docker Hub(URL: https://registry-1.docker.io)。
    5. 生成新地址:例如项目名为 proxy-hub,则拉取命令:docker pull harbor.example.com/proxy-hub/nginx:latest(它会自动代理原 nginx:latest)。
    6. 配置 Docker 客户端(可选,全局代理):在 /etc/docker/daemon.json"registry-mirrors": ["https://harbor.example.com/proxy-hub"],重启 Docker。
  • 优点:免费开源、UI 友好、缓存自动、支持 Kubernetes。缺点:需自建服务器(最低 2GB RAM)。

  • 下载/文档:GitHub goharbor/harbor,官方文档 Proxy Cache 配置

2. Sonatype Nexus Repository OSS(备选,轻量级)

另一个开源选项,支持 Docker proxy 仓库。设置后,类似 Harbor,用 <nexus 地址>/<仓库名>/<原镜像> 作为新 URL。没有专用 Web UI 生成 URL,但 UI 可浏览仓库并复制命令。

  • 设置简述

    1. 下载 Nexus OSS:docker run -d -p 8081:8081 sonatype/nexus3
    2. 登录 UI(admin/admin123),创建 docker (proxy) 仓库,远程存储 URL 设为 https://registry-1.docker.io
    3. 新地址示例:nexus.example.com/docker-hub/nginx:latest
    4. 拉取:docker pull nexus.example.com/docker-hub/nginx:latest(自动缓存)。
  • 优点:简单,集成 Maven 等。缺点:UI 不如 Harbor 直观,无一键 API 生成 URL。

  • 文档Proxy Repository for Docker

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 生成功能,拉取仍用原命令。
  • GitHubrpardini/docker-registry-proxy

注意事项

  • 网络环境:这些项目需部署在有外网的服务器上(VPS),然后你的本地 Docker 配置镜像加速或直接用新 URL 拉取。
  • 限速规避:Harbor 等能缓存 manifest,避免 Docker Hub 拉取限制(100 次/6 小时)。
  • 测试:先用 Harbor 的在线 demo(goharbor.io)试拉取,确认效果。
  • 如果你需要纯 CLI 工具(无服务器),目前开源中没有完美匹配;可以结合 skopeo(CLI 复制镜像)脚本模拟,但不优雅。

如果这些不完全匹配你的场景(例如要纯 Web 工具无部署),提供更多细节我可以再搜!

写文章用