English | 简体中文
这是一个 Cloudflare Worker,用作各种容器注册表的代理。它已重构为使用 Cloudflare KV 后端进行动态路由。
- 通过 Cloudflare KV 进行动态路由。
- 支持 Docker Hub、Quay、GCR 等。
- 处理 Docker Hub 官方镜像重定向(例如:
busybox->library/busybox)。 - 处理身份验证令牌获取。
- 一个 Cloudflare 账号。
- 已安装 Node.js 和 npm。
本项目使用 Cloudflare KV 存储动态路由信息。
- 创建一个 KV 命名空间:
npx wrangler kv namespace create ROUTES
- 记录输出中的
id。 - 更新
wrangler.jsonc文件,将YOUR_KV_NAMESPACE_ID_HERE替换为你实际的 KV 命名空间 ID。
运行部署命令:
npm run deploy你可以通过向 KV 命名空间添加键值对来配置路由。键应该是主机名(例如 docker.example.com),值应该是上游注册表 URL(例如 https://registry-1.docker.io)。
示例:
npx wrangler kv key put --binding=ROUTES "docker.example.com" "https://registry-1.docker.io"如果你的主机名包含多于两个部分(例如 docker.example.com),Worker 会自动检查第一部分(子域名)是否匹配以下默认配置:
docker->https://registry-1.docker.ioquay->https://quay.iogcr->https://gcr.iok8s-gcr->https://k8s.gcr.iok8s->https://registry.k8s.ioghcr->https://ghcr.iocloudsmith->https://docker.cloudsmith.ioecr->https://public.ecr.aws
由于 Cloudflare 的出口 IP 是共享的,匿名拉取 Docker Hub 镜像时常会遇到 429 Too Many Requests。你可以通过配置自己的 Docker Hub 凭据来解决:
- 在 Docker Hub 账户设置中创建一个 Access Token。
- 使用
wrangler将凭据存入 Worker 的加密变量中:npx wrangler secret put DOCKER_USERNAME # 输入你的 Docker Hub 用户名 npx wrangler secret put DOCKER_PASSWORD # 输入你创建的 Access Token
配置完成后,Worker 将自动代表你进行认证,从而获得更高的拉取配额。
请确保已在 Cloudflare Dashboard 中将你的主机名(例如 docker.example.com)添加为该 Worker 的 自定义域名 (Custom Domains)。
npm test