Skip to content

Repository files navigation

中文 | English

Docker Proxy Logo
自建Docker镜像加速服务,一键部署Docker、K8s、Quay、Ghcr、Mcr、elastic、nvcr等镜像加速\管理服务.


📝 准备工作

⚠️ 重要:选择一台国外服务器,并且未被墙。对于域名,无需进行国内备案。你也可以通过一些平台申请免费域名。在一键部署过程中,如果选择安装Caddy,它将自动配置HTTPS。若选择部署Nginx服务,则需要自行申请一个免费的SSL证书,或者通过其他方式来实现SSL加密。

免费域名证书申请

方式一: Acme.sh自动生成和续订Lets Encrypt免费SSL证书

方式二: 域名托管到Cloudflare 开启免费SSL证书

方式三: 可通过第三方平台,申请免费的域名证书(免费一般都为DV证书),适用于个人网站、博客和小型项目


🔨 功能

  • 零磁盘缓存:单进程按 Host 自动路由到各大公共仓库(Docker HubGHCRQuayK8sMCRElasticNVCR 等),服务端完成 token 鉴权并以流式转发,不落盘、不占用本地存储
  • 一键部署:交互式菜单一键完成「安装依赖 → 启动 Docker 镜像加速 →(可选)渲染 Nginx/Caddy 反代」
  • 可选反代服务:自动部署 Nginx 或 Caddy 反代,并渲染对应配置(HTTPS、Host 改写)
  • 支持仓库账号认证:可配置上游账号密码,由代理服务端换取 Bearer Token,从而拉取 Docker Hub 私有镜像并缓解官方限流
  • HubCMD-UI 管理面板:网页端直接增删改代理、设置服务器参数并热重载;含镜像搜索、文档教程、容器管理、监控告警等
  • 跨平台镜像:支持主流 linux/amd64linux/arm64 等系统架构的部署
  • 系统看板:实时监控服务器资源与容器运行状态、网络流量信息
  • 日常运维管理:提供服务启动 / 停止 / 重启 / 日志 / 更新 / 卸载等全生命周期管理
  • 流量监控、告警:提供服务器带宽吞吐量及镜像拉取的详细客户端侧流量指标、阈值监控告警
  • Registry 管理:每个 Registry 独立配置管理,在线管理镜像代理(注册表)与服务设置,无需手动编辑配置文件
  • IP 访问控制:IP 黑白名单,控制谁能通过本服务拉取镜像。支持单个 IP 与 CIDR 网段

📦 部署

Docker 部署

直接下载 docker-compose.yaml 后运行:

docker compose up -d

一键部署脚本

仓库内置 install/DockerProxy_Install.sh,交互式菜单一键完成「安装依赖 → 启动 Docker 镜像加速 →(可选)渲染 Nginx/Caddy 反代」。

# CentOS && RHEL && Rocky
yum -y install curl
# ubuntu && debian
apt -y install curl

# 国外环境
bash -c "$(curl -fsSL https://raw.githubusercontent.com/dqzboy/Docker-Proxy/main/install/DockerProxy_Install.sh)"

# 国内环境cdn加速地址
bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/dqzboy/Docker-Proxy/install/DockerProxy_Install.sh)"

# 国内Github代理地址
bash -c "$(curl -fsSL https://ghp.ci/https://raw.githubusercontent.com/dqzboy/Docker-Proxy/main/install/DockerProxy_Install.sh)"

脚本会自动:检查并安装 Docker / Docker Compose;生成随机 GO_PROXY_ADMIN_TOKEN 写入 .env;可选部署 Nginx / Caddy 反代。

部署完成后访问 http://<服务器IP>:30080/admin 即可在网页管理代理与服务器参数

配置持久化与升级(重要)

配置文件挂载在宿主机 ./config/go-proxy/ 目录(容器内 /app/config.d/config.yaml

  • 首次启动若宿主机还没有配置文件,容器会自动用镜像内置的默认配置初始化一份,无需手动创建。
  • 想恢复默认配置:删掉 ./config/go-proxy/config.yaml 后重建容器即可重新播种。

💻 Hubcmd-UI

  • 默认账户: root / admin@123 部署后请及时修改默认账号和密码

镜像加速 镜像搜索
Registry 管理 Registry 配置
系统看板 流量监控
访问控制 网络测试

🛠 本地开发

面向参与二次开发、调试、或本地构建镜像的开发者。两个子项目(go-proxy/hubcmdui/互相独立,可单独跑起来。

go-proxy(Go 后端)

前置:Go ≥ 1.23(go-proxy/go.mod 中明确要求 1.23.0)

cd go-proxy

# 方式 A:自动发现当前目录下的 config.local.yaml > config.yaml > config.example.yaml
go run .

# 方式 B:显式指定配置文件
go run . ./config.local.yaml

服务启动后:

端口 用途 暴露范围
:5000 OCI Registry 反向代理(/v2/ 主入口) 公网 / 反代后
:5001 管理 API(/-/healthz/-/config/-/reload/-/stats/-/credentials 仅内网

⚠️ 关于 GO_PROXY_ADMIN_TOKEN:管理 API 走的是独立 admin token 鉴权,且启动期会强校验——token 为占位符(change-me / admin / 空串等)或长度 < 16 会直接拒绝启动。本地开发至少临时设一个 16 位以上的随机值:

export GO_PROXY_ADMIN_TOKEN="$(openssl rand -hex 16)"

hubcmdui(Web UI)

前置:Node.js ≥ 18(推荐 20 LTS)

cd hubcmdui
npm install

# 启动开发服务
npm run dev

服务默认监听 :3000,管理入口 http://localhost:3000/admin,默认账号 root / admin@123首次登录强制改密


💌 推广

AIHUB
AIHUB

稳定实惠的 AI API 中转服务
DediOne
DediOne

快速可靠的网站托管服务
DediRock
DediRock

美国多机房高性价比 VPS
RackNerd
RackNerd

适合建站和 Docker服务的海外 VPS
CloudCone
CloudCone

灵活按需付费的云服务器

推广合作
仅接受长期稳定运营、信誉良好的商家
Telegram · support@dqzboy.com


🤝 参与贡献

感谢所有做过贡献的人!

❤ 鸣谢

感谢以下项目的开源的付出:

项目参考了 CNCF Distribution 的镜像代理设计思路。

License

Docker-Proxy is available under the Apache 2 license


Star History

Star History Chart

About

自建 Docker 镜像加速与管理服务。零磁盘缓存、可视化面板、支持上游账号认证,支持一键部署Docker、K8s、Quay、Ghcr、Mcr、elastic、nvcr等镜像加速

Topics

Resources

Stars

4.4k stars

Watchers

20 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages