Skip to content
aurorax-neoPublic

About

docker

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Docker Proxy - Cloudflare Snippets Edition

这是一个专为 Cloudflare Snippets (Rules -> Snippets) 设计的极简版 Docker 镜像仓库加速代理脚本。

与传统 Worker 版本相比,此版本移除了繁重的响应体正则替换操作,将代码压缩到了几十行,完美符合 Snippets 严苛的 5ms CPU 耗时限制,并且可以直接绑定在你现有的域名上运行。

✨ 特性

  • 多仓库与任意域名动态支持:原生内置 Docker Hub、ghcr.io (GitHub)、quay.io (Red Hat)、gcr.io (Google)、registry.k8s.io (Kubernetes)、mcr.microsoft.com (微软)、nvcr.io (NVIDIA)、docker.elastic.co (Elastic)、registry.gitlab.com (GitLab)、public.ecr.aws (AWS) 等主流仓库,并支持任意含点号的标准镜像域名自动识别分发。
  • 动态 Auth 鉴权劫持与作用域重写:兼容多个仓库的不同 Token 服务器,自动拦截 401 鉴权挑战并精确重写 Scope,彻底解决官方短名镜像(如 postgres)报 access denied 的问题。
  • 429 限流突破:支持注入 Docker 凭证(Personal Access Token),且突破 Cloudflare 共享 IP 匿名限流。
  • 客户端残留登录态自愈 (Auto Fallback):自动检测并容错客户端残留的 docker login 无效凭据,在上游鉴权返回 401 时智能降级为匿名身份重试,无需手动 docker logout。
  • 隐蔽防探测 (Stealth Mode):精准拦截非 Docker 规范的请求,静默丢弃并返回 404 Not Found,防恶意扫描,不暴露代理特征。
  • 官方镜像自动补全:自动为 postgres、nginx 等短名官方 Docker 镜像补足 /v2/library/ 路径及 Token 作用域。
  • 极简高性能:专为 Snippets 引擎优化,无正则 body 替换,确保耗时远低于 5ms 限制。全方法透传支持镜像拉取(注:受限于 Cloudflare 免费版单次上传 100MB 限制,较大镜像层不建议使用 Push)。

🚀 部署指南 (Cloudflare Snippets)

  1. 登录 Cloudflare 控制台,进入你的域名管理面板。
  2. 在左侧菜单栏找到 Rules (规则) -> Snippets (片段)。
  3. 点击 Create Snippet,给它取个名字(如 docker-proxy)。
  4. 将本项目中 index.js 的代码全部复制并粘贴到代码框中。
  5. 在 Filter (过滤器) 中配置该规则的触发条件。例如:
    • 匹配 Hostname 等于 docker.你的域名.com
    • (请确保你已经在 DNS 里将 docker.你的域名.com 代理状态开启,即点亮黄色的云朵)
  6. 点击 Save and Deploy (保存并部署)。

💻 客户端使用指南

1. 拉取常规 Docker Hub 镜像

通过修改 daemon 配置,实现无缝拉取。编辑 /etc/docker/daemon.json:

{
  "registry-mirrors": [
    "https://docker.你的域名.com"
  ]
}

重启 Docker 服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

测试拉取:

docker pull alpine

2. 拉取第三方镜像 (如 ghcr.io, gcr.io)

⚠️ 注意: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,剥离多余路径,并去正确的服务器拉取资源及鉴权。

🛠 常见问题排查

遇到 429 Too Many Requests 报错?

由于 Cloudflare 的出口 IP 被全球网民大量共用,Docker Hub 会极快耗尽对这些 IP 的“匿名拉取额度”(100次/6小时)。

解决方案:在脚本中绑定你的个人 Docker 账号来绕过匿名限制!

  1. 前往 Docker Hub - Security 申请一个 Personal Access Token (PAT)。
  2. 获取你的 Docker ID (英文用户名,非邮箱)。
  3. 在本地终端生成 Base64 凭证:
    echo -n "你的DockerID:生成的Token" | base64
  4. 将输出的那串乱码(例如 dXNlcjpwYXNz)填写到 index.js 的以下位置中:
    const DOCKER_AUTH_B64 = "填入你的Base64字符串"; 
  5. 重新保存并部署 Snippet,以后所有的请求都会走你个人账号的 200次/6小时 独立额度,彻底告别 429。

About

docker

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages