前言
近期由于各个docker镜像站点相继关停,导致在ContainerManager中只能够搜索注册表,但是因网络原因下载超时,无法拉取新的docker镜像。而阿里云拉取的镜像特别老旧。按照指月小筑的教程成功99%。
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 中的
图标对应的 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。
就像这样:
等待部署完成
可以到 Github 查看 Action 执行进度
执行完成后,切换到 Cloudflare Dashboard ,不出意外的话就可以看到刚创建的 Worker 了。
切换到 Setting,等待 SSL 证书签发完成即可
使用说明
部署完成后,访问 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版本,不支持其他版本。
现在好像国内恢复对docker的访问了