利用Cloudflare Workers服务代理群晖Docker拉取

利用Cloudflare Workers服务代理群晖Docker拉取

前言
近期由于各个docker镜像站点相继关停,导致在ContainerManager中只能够搜索注册表,但是因网络原因下载超时,无法拉取新的docker镜像。而阿里云拉取的镜像特别老旧。按照指月小筑的教程成功99%。

利用Cloudflare Workers服务代理群晖Docker拉取

2024.06.19,注册表可搜索,下载失败。

准备工作

1.首先要注册一个 Cloudflare 账号、一个GitHub账号。

2.Cloudflare 账号下需要添加一个域名,推荐到万网注册一个域名,再转移到 Cloudflare。

(账号注册及如何将域名转入Cloudflare自行百度)


第一步:现在Github上将lixd/CloudFlare-docker-proxy项目Fork到自己的仓库。
然后修改 src/index.js,修改内容如下:

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

其中 mydomain.com 就是你的域名,比如我这里用的是 lixd.xyz
再修改 wrangler.toml,同样是替换域名同样的 mydomain.com 就是你的域名

[env.production]
name = "cloudflare-docker-proxy"
routes = [
  { pattern = "docker.mydomain.com", custom_domain = true },
  { pattern = "quay.mydomain.com", custom_domain = true },
  { pattern = "gcr.mydomain.com", custom_domain = true },
  { pattern = "k8s-gcr.mydomain.com", custom_domain = true },
  { pattern = "k8s.mydomain.com", custom_domain = true },
  { pattern = "ghcr.mydomain.com", custom_domain = true },
  { pattern = "cloudsmith.mydomain.com", custom_domain = true },
]

[env.production.vars]
MODE = "production"
TARGET_UPSTREAM = ""

[env.staging]
name = "cloudflare-docker-proxy-staging"
route = { pattern = "docker-staging.mydomain.com", custom_domain = true }

最后修改 README.md 中的

https://deploy.workers.cloudflare.com/button

图标对应的 Github 仓库地址为你 fork 后的仓库地址。

比如 https://deploy.workers.cloudflare.com/?url=https://github.com/lixd/cloudflare-docker-proxy

lixd/CloudFlare-docker-proxy的项目中有一个“help.html”文件为网页前端信息,修改与否不影响使用,介意的自行修改,参照指月小筑的教程。


第二步:点击部署

提交代码后,在 Github 界面点击这个图标进行部署,会自动跳转到 cloudflare,按步骤操作即可,最终会在 Github 仓库中创建一个 Github Action 来将该仓库部署到 Cloudflare Workers。

就像这样:

https://img.lixueduan.com/docker/mirror/deploy-to-cloudflare.png

等待部署完成

可以到 Github 查看 Action 执行进度

https://img.lixueduan.com/docker/mirror/deploy-progress.png

执行完成后,切换到 Cloudflare Dashboard ,不出意外的话就可以看到刚创建的 Worker 了。

https://img.lixueduan.com/docker/mirror/cloudflare-workers.png

切换到 Setting,等待 SSL 证书签发完成即可

https://img.lixueduan.com/docker/mirror/cloudflare-workers-setting.png

使用说明

部署完成后,访问 https://docker.mydomain.com 就可以看到使用说明了。

比如:https://docker.lixd.xyz

注:以上内容皆来自指月小筑的博客。原文链接


群晖部分的修改

由于群晖 7.2系统之后的Docker叫做ContainerManager,所以应用代理地址上有一些不同之处。为了加速群晖 Docker 镜像拉取,你可以使用以下命令设置 registry mirror:

sudo -i
//获取管理员权限(出现Password时输入群晖登录密码并回车,密码输入时密码不显示)
cd /var/packages/ContainerManager/etc 
//进入docker文件配置目录

vim dockerd.json
//编辑配置文件

出现以上信息时按i开始编辑
方向键移动光标在registry mirror:[ ] 内部,添加代理地址。

比如registry-mirrors”:[“https://docker.veitzn.site“],注意格式正确
修改完之后按ESC退出编辑,

输入

:wq! 
//保存


重启群晖 ContainerManager 套件 输入:

synopkg restart ContainerManager

提示:restart package [ContainerManager] successfully 表示重启完成

查看代理地址是否应用成功 输入:

docker info

在Registry Mirrors: 后显示代理地址表示代理应用成功。
此时无论是使用docker pull拉取还是在ContainerManager直接拉取都可以获取镜像了。
注意:当前的方式只能选择拉取latest版本,不支持其他版本。

1 Comment

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注