这是一个专为 Cloudflare Snippets (Rules -> Snippets) 设计的极简版 Docker 镜像仓库加速代理脚本。
与传统 Worker 版本相比,此版本移除了繁重的响应体正则替换操作,将代码压缩到了几十行,完美符合 Snippets 严苛的 5ms CPU 耗时限制,并且可以直接绑定在你现有的域名上运行。
- 多仓库支持:原生支持代理
Docker Hub、ghcr.io(GitHub)、gcr.io(Google)、quay.io等常见的第三方镜像库。 - 动态 Auth 鉴权劫持:兼容多个仓库的不同 Token 服务器,自动拦截 401 鉴权挑战。
- 429 限流突破:支持注入 Docker 凭证(Personal Access Token),彻底解决 Cloudflare 共享 IP 匿名拉取被限流的问题。
- 隐蔽防探测 (Stealth Mode):精准拦截非 Docker 规范的请求,静默丢弃并返回
403 Forbidden,防恶意扫描,不暴露代理特征。 - 官方镜像补全:自动为
nginx等短名官方 Docker 镜像补足/v2/library/路径。 - 极简高性能:专为 Snippets 引擎优化,无正则 body 替换,确保不超时。全方法透传支持镜像拉取和推送。
- 登录 Cloudflare 控制台,进入你的域名管理面板。
- 在左侧菜单栏找到 Rules (规则) -> Snippets (片段)。
- 点击 Create Snippet,给它取个名字(如
docker-proxy)。 - 将本项目中
index.js的代码全部复制并粘贴到代码框中。 - 在 Filter (过滤器) 中配置该规则的触发条件。例如:
- 匹配
Hostname等于docker.你的域名.com - (请确保你已经在 DNS 里将
docker.你的域名.com代理状态开启,即点亮黄色的云朵)
- 匹配
- 点击 Save and Deploy (保存并部署)。
通过修改 daemon 配置,实现无缝拉取。编辑 /etc/docker/daemon.json:
{
"registry-mirrors": [
"https://docker.你的域名.com"
]
}重启 Docker 服务:
sudo systemctl daemon-reload
sudo systemctl restart docker测试拉取:
docker pull alpine
⚠️ 注意:Docker 的registry-mirrors机制天生只对 Docker Hub 生效。对于其它第三方仓库,你必须手动在镜像名称前面加上你的代理域名!
原命令:
docker pull ghcr.io/wg-easy/wg-easy:15.4.0
加速拉取命令:
docker pull docker.你的域名.com/ghcr.io/wg-easy/wg-easy:15.4.0
脚本会自动识别路径中的 ghcr.io,剥离多余路径,并去正确的服务器拉取资源及鉴权。
由于 Cloudflare 的出口 IP 被全球网民大量共用,Docker Hub 会极快耗尽对这些 IP 的“匿名拉取额度”(100次/6小时)。
解决方案:在脚本中绑定你的个人 Docker 账号来绕过匿名限制!
- 前往 Docker Hub - Security 申请一个
Personal Access Token(PAT)。 - 获取你的 Docker ID (英文用户名,非邮箱)。
- 在本地终端生成 Base64 凭证:
echo -n "你的DockerID:生成的Token" | base64
- 将输出的那串乱码(例如
dXNlcjpwYXNz)填写到index.js的以下位置中:const DOCKER_AUTH_B64 = "填入你的Base64字符串";
- 重新保存并部署 Snippet,以后所有的请求都会走你个人账号的 200次/6小时 独立额度,彻底告别 429。