使用 Cloudflare Workers 自建 Docker 镜像源

前几天各大镜像站全部挂掉，拉取 Docker镜像就成了问题

开始我也不关心，挂了就上代理去拉，但是在我本地使用Docker的时候即使挂了代理也不能正常拉取

于是我开始找解决方案，找了一圈，发现有以下方案

利用Cloudflare Workers 搭建，需要一个 域名 -> 原帖

自建 Nexus 3， 需要一台国外 VPS 最好 4G内存以上，还需要一个 域名 -> 原帖

使用 Github Action 将 DockerHub 镜像转存到阿里云私有仓库，这个只需要一个 Github 账号 -> 原帖

使用 Nginx反代 ，比较适合已经有一台服务器的人 -> 原帖

其他的话就是找现成的镜像源，一般这类不是很稳定，就没考虑这个

我用的第一种方案，比较简单，原帖 的教程并不是很详细，我这里完善一下

进入 Cloudflare 首页 ，在左侧 Workers & Pages 中新建一个 Workers, 同时保存一下右侧的 Account ID

给 Workers 起一个名字，点击 Save ，然后点击 Finish

出现这个页面，就可以进行下一步了

Fork 这个仓库，Clone 到本地

按照惯例先装依赖

Copy
pnpm i

然后将 wrangler.toml.sample 重命名为 wrangler.toml

Copy
cp wrangler.toml.sample wrangler.toml

编辑一下 wrangler.toml 文件，修改 name和account_id

Copy
name = "workers的名称"
account_id = "这里填写上面复制的 Account ID"
main = "src/index.ts"
workers_dev = true
compatibility_date = "2024-06-08"

kv_namespaces = [
{ binding = "HAMMAL_CACHE", id = "you kv id" }
]

获取一下 kv ID，执行完下面的命令会输出 id ，修改配置中的 id

Copy
npx wrangler kv:namespace create hammal_cache

之后部署，执行

Copy
pnpm run deploy

Warning

这里会提示，你即将发布一个 Workers 服务，该服务最后一次是通过 Cloudflare Dashboard 发布的，通过 Cloudflare Dashboard 所做的编辑将会被你本地的代码和配置覆盖

输入 y , 正常会打开浏览器让你授权，授权即可，我这里因为已经部署过了，所以没有弹出来

给刚刚部署好的 Workers 添加一个域名

等待域名生效就可以正常使用了，一般来说在服务器上修改 /etc/docker/daemon.json，配置一下你刚搭建好的源地址就行

Copy
"registry-mirrors": [
"https://hammal.example.com"
]

我在Mac 上使用的是 Orbstack，则需要在软件中直接配置

此文由 Mix Space 同步更新至 xLog
原始链接为 https://remrin.dev/posts/dev/docker