使用 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
到本地按照惯例先装依赖
pnpm i
然后将
wrangler.toml.sample
重命名为wrangler.toml
cp wrangler.toml.sample wrangler.toml
编辑一下
wrangler.toml
文件,修改name
和account_id
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
npx wrangler kv:namespace create hammal_cache
之后部署,执行。
pnpm run deploy
这里会提示,你即将发布一个 Workers 服务,该服务最后一次是通过 Cloudflare Dashboard 发布的,通过 Cloudflare Dashboard 所做的编辑将会被你本地的代码和配置覆盖
输入
y
, 正常会打开浏览器让你授权,授权即可,我这里因为已经部署过了,所以没有弹出来给刚刚部署好的
Workers
添加一个域名 等待域名生效就可以正常使用了,一般来说在服务器上修改/etc/docker/daemon.json
,配置一下你刚搭建好的源地址就行"registry-mirrors": [ "https://hammal.example.com" ]
我在
Mac
上使用的是 Orbstack,则需要在软件中直接配置