使用CF Workers搭建Docker Proxy

由于一些原因,国内无法拉取 Docker Hub 镜像,所以需要通过一些手段来解决问题。

  • 有 Cloudflare 账号
  • 有自己的域名,且域名托管在 Cloudflare 上
  • Cloudflare Workers 额度足够

进入 Cloudflare 主页:https://dash.cloudflare.com/

image-20240607153156480

添加站点,输入你自己的域名,套餐选择free

image-20240607153334806

添加站点之后根据提示去你的域名服务商修改dns 地址为 Cloudflare 提供的 dns 地址,等待生效,出现以下提示代表成功。

image-20240607153453990

Fork 复制cloudflare-docker-proxy项目

修改 src/index.jsconst routes 块的内容

js

const routes = {
  "docker.your-domain.com": "https://registry-1.docker.io",
  "quay.your-domain.com": "https://quay.io",
  "gcr.your-domain.com": "https://k8s.gcr.io",
  "k8s-gcr.your-domain.com": "https://k8s.gcr.io",
  "ghcr.your-domain.com": "https://ghcr.io",
};

your-domain.com修改为你的域名

点击Deploy to Cloudflare Workers

显示如下页面,按步骤操作

image-20240607154400843

此处 Account ID 即首页 URL 后一串字符,比如我的为https://dash.cloudflare.com/bbb4199a897de10e7c1056e1c56fd754

API Token 在个人资料页面,选择 api 令牌创建

image-20240607154043776

Deploy 部署后如下

image-20240607155054679

在 Cloudflare 的 DNS 记录里添加 A 指向一个任意的地址,比如192.0.2.1

image-20240607155239449

在 Workers 路由里,添加 *.your-domain/* 路由指向 cloudflare-docker-proxy

image-20240607155405792

至此 proxy 配置完成

通过命令拉取测试,docker pull docker.<your-domain>/library/nginx

image-20240607155715599

将配置后的 docker.<your-domain> 添加到 /etc/docker/daemon.jsonregistry-mirrors 中并重启 Docker 生效。

相关内容