使用 Cloudflare Workers 搭建 Docker 镜像代理

通过 Cloudflare Workers 搭建自己的 Docker 镜像中转节点,解决国内 Docker 加速源不可用的问题
2023-08-01
背景
目前国内 docker 加速源逐渐用不了了。就想着自己搭一个镜像中转的节点。
这里使用 hammal 的方案,通过 Cloudflare Workers 搭建。
前提
- 网络环境能正常访问cloudflare。
- 有自己的域名。
安装方法
这里截取官方教程的部分。
Fork & Clone
首先 fork 仓库 GitHub - ImSingee/hammal: docker-registry proxy run in cloudflare workers ,并克隆到本地
可以的话顺便给个 Star😂
使用 pnpm install 安装依赖。没有的话使用 npm 安装 pnpm。
npm install -g pnpm
其实这里不确定npm和pnpm对项目包安装有什么影响,能用pnpm尽量用pnpm。
创建 Workers 项目
进入 Cloudflare Dashboard -> Workers 和 Pages -> 概述 创建一个新的 Workers 项目,给他一个命名(例如 hammal)
在代码中复制 wrangler.toml.sample 文件, 改名 wrangler.toml 并修改其 name 和 account_id
name: 创建的 Worders 项目名 account_id: 可以通过 npx wrangler whoami 获得,也可以在 Workers 概述页面右侧的账户ID处复制。
创建 cache 缓存 kv
在克隆好的项目目录下执行 npx wrangler kv:namespace create hammal_cache 来创建缓存 kv,记录下来输出的 id,填写到 wrangler.toml 文件中
部署
在克隆好的项目目录下执行 pnpm run deploy 来部署项目
域名
有域名则需要把域名的 名称服务器(name server) 改到 cloudflare 上,可以在 网站 -> 添加的域名 -> DNS -> 记录 页面下获取。
设置后一般等待24小时即可在 cloudflare 上控制域名解析。
可以解析后前往 Workers 和 Pages -> 用来获取docker的Workder -> 设置 -> 触发器 -> 自定义域 -> 添加自定义域。直接输入完整访问域名即可。例如mirror.docker.xxx.com。
本地Docker设置
使用自定义的域名设置 deamon.json。通常在 /etc/docker/daemon.json 。
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://mirror.docker.xxx.com"
]
}
EOF