利用CloudFlare解决群晖DockerHub被禁后无法拉取镜像问题
背景:
前段时间dockerhub因为比较复杂的原因在国内被墙了
之前只是register服务器被禁用,还能通过使用国内众多的镜像使用
或者通过命令行docker pull拉取镜像
但是这回所有镜像站都被关闭命令行也不好使了。
这直接导致群晖dsm7.x的container manager也无法下载镜像
经常更新镜像的项目,需要开全局代理才能够正常拉取镜像,特别麻烦。
尤其是docker engine/cli这些镜像的配置非常的麻烦,远比常规的bash代理复杂很多。
对于很多nas用户来说非常使用非常困难
特别是这类配置代理的手段,需要重启整个docker daemon
说人话就是要关掉所有正在运行的 容器
但是天无绝人之路,前两天看到一篇利用cloudflare pages搭建临时的镜像的文章
试了试,还真的有效
原帖的地址在这里
[20行代码解决dockerhub的访问问题] https://zhuanlan.zhihu.com/p/705937780
感兴趣的可以去原帖查看
省流:
这个方法应该同时适用于dsm6.x和dsm7.x,具体细节可能因为两个版本系统会有差异
你需要做的就是注册cloudflare和github
使用这种方法的代理后,拉取镜像的速度可以跑满带宽
什么是cloudflare
这里先简单介绍一下cloudflare
Cloudflare, Inc. 是一家美国公司,提供内容分发网络服务、云网络安全、DDoS缓解、域名服务以及ICANN认证的域名注册服务。Cloudflare的总部位于加利福尼亚州的旧金山。--引用自bing
下面简称CF
CF是一个全球范围的cdn超级巨头,为很多公司的服务器提供cdn服务
(cdn就是类似一个很远的网站,缓存在一些内容在离你比较近的cdn服务器,这样访问延迟,目标服务器压力都会小很多)
值友很多应该听说过PCDN,这个就是一个差不多,cdn服务。
CF的规模很大,也提供很多免费的服务可以白嫖。
比如什么常见的DNS域名托管,解析,也对个人网站提供限量的免费的cdn服务。
简单说就是可以白嫖很多服务了,具体细节去看别的文章吧
这里要用到就是CF提供的一个pages,网站服务
大概就是给你提供一个免费的小网站服务器,你没法直接操作。
我们要用的就是用CF这个pages服务为dockerhub搭建一个临时的访问点。
当你用docker 访问这个站点时,可以自动转发给dockerhub
实现一个类似nginx 那样的代理效果。
重点是免费
一天提供10000次访问,对于nas用户和一些科研需要的用户,完全足够了
什么是github
github实际上是一个很大的,代码托管平台,简单就是提供免费的代码存放 管理服务,
很多人会把自己的代码上传到上面分享,方便其他用户使用,也有很多商业公司在使用github。
github也提供很多免费的服务,比如常见的action自动构建,可以用来编译一些代码,例如openwrt镜像。还有github.io 免费静态网站,可以为自己生成一个免费的静态页面网站,还给你一个不错的域名,但是不能用于其他用途。
想要使用代理
首先你需要在这两个网站上面注册,这里我就略过了
可能有点麻烦的会是github注册,因为可能需要用到2FA,简单说就是一个手机令牌
你可以下载一个microsoft authenticator app来绑定。
Cloudflare的注册就比较简单了,常规的邮箱注册即可。
Github fork项目
这里教程中提到的项目就是位于 whyun-pages/docker-registry (github.com)。
然后你需要打开这个项目的网站
按上面的图片点击右上角的fork按钮 (fork的意思是分叉,复制的意思
然后点击确定,复制一份他的代码到你的github仓库当中。
从右上角点击头像,打开your repositories
你就能能够看到一个从作者那里fork过来的docker-registry项目了。
剩下的流程就很简单了,跟着上面帖子的流程走就行了。
走完上述流程,你应该可以打开一个这样的镜像网站
(可能需要等几分钟,因为你新开的网站,域名dns解析刷新需要时间
给群晖配置代理镜像
流程很简单,先打开群晖的container manager
当然dsm6的docker应该也能使用
切换到注册表,点击上方的设置
让我们开始设置镜像代理
我们需要修改一下原有的docker hub注册项
像这样
如果没有这个的话,你也可以手动添加一个
点击新增即可
注册表名称随意: 毕竟只是名称,你可以改成cloudflare
然后注册表url 是 https://index.docker.io
勾选启用注册表镜像,对应的url里面填入你在CF pages得到的那个网站页面地址
勾选下面的信任的ssl自我签署证书。
上面的记得都要带上https
填完点击确定后,
返回上一级,选择你新建的项,然后点击那个使用
这样就选择了这个项作为dockerhub注册的项目了。
确定后,回到container manager里面
点击注册表,随意搜索一个镜像
然后我们拉取试试
可以看到有下载速度,并且速度非常夸张的跑满了带宽
可以说效果非常棒。
当然记得不要随意泄漏你们的临时镜像的域名
不然可能会被别人大量拉取,然后超过使用上限。
希望这篇帖子能够帮到大家
然后有什么问题可以在评论区提问
偶尔会回复一下
部分地区可能因为宽带运营商的问题会无法访问github,所以可能会需要代理(比如说移动宽带)
拜拜
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
joeyzhou1980
校验提示文案
不知道取什么名好
校验提示文案
sunshineiyb
校验提示文案
wtj1992
校验提示文案
省出豪宅
校验提示文案
值友3469852116
校验提示文案
表弟用毛线
校验提示文案
Watching98
校验提示文案
无字添书
校验提示文案
BillGor
校验提示文案
dingfumxq
校验提示文案
鲁鲁休
校验提示文案
sunshineiyb
校验提示文案
yrui
校验提示文案
不知道取什么名好
校验提示文案
weicj
校验提示文案
不知道取什么名好
校验提示文案
表弟用毛线
校验提示文案
yrui
校验提示文案
sunshineiyb
校验提示文案
sunshineiyb
校验提示文案
鲁鲁休
校验提示文案
不知道取什么名好
校验提示文案
joeyzhou1980
校验提示文案
值友3469852116
校验提示文案
dingfumxq
校验提示文案
省出豪宅
校验提示文案
BillGor
校验提示文案
weicj
校验提示文案
无字添书
校验提示文案
Watching98
校验提示文案
wtj1992
校验提示文案