【Bin】群晖Docker镜像加速最优解-使用Kspeeder搭建本地镜像服务 and 解决ContainerManager无法使用带端口的镜像问题
编辑
本文为原创教程,未经允许,禁止转载,违者必究!
前言
众所周知,早些时候由于未知原因 Docker 镜像源神秘消失,笔者近期被 ContainerManager 的镜像下载气的爆炸,而免费的镜像源经常一言不合就瞬间爆炸,每到部署的关键时刻弹出一堆 timeout 或者下载次数耗尽,又或者下到一半发生神秘断连。笔者想起了软路由iStoreOS上有一个神秘小插件 Kspeeder 可以酷酷加速 Docker下载,几个镜像源并行加速,那装到我的群晖NAS上岂不是美美起飞。经过多次尝试试错,就有了本篇教程。
第一步:安装ContainerManager,开启SSH
什么?你连 ContainerManager 都没安装,那你为什么会需要加速Docker镜像下载?Σ(っ °Д °;)っ
此处不再过多描述 ContainerManager 的安装,想必有群晖的小伙伴都知道这个是什么东西,就是个Docker环境及管理界面。安装方法简单来说就是点击【套件中心】-【所有套件】-【ContainerManager】-【安装套件】-【结束】
打开【控制面板】-【终端机SNMP】开启【SSH】功能,这里推荐修改为其他端口,并且在使用后关闭SSH功能,暴露SSH可能会导致服务器遭受攻击。
第二步:安装Kspeeder
打开 Putty 或 Termius 等SSH客户端,输入您群晖IP地址及端口号点击连接。
本教程使用Termius进行登录,添加主机发起连接后,输入用户名(管理员)及登录密码即可登录,注意登陆密码输入时可能不会显示字符,这是正常现象。
由于Docker镜像源已经神秘失联,故只能通过其他镜像源下载 Kspeeder,在终端中依此输入以下指令(注意输入sudo -i回车后需要输入管理员密码进入root账户):
sudo -i
docker pull docker.m.daocloud.io/linkease/kspeeder
docker tag docker.m.daocloud.io/linkease/kspeeder docker.io/linkease/kspeeder
执行结果如下(因为我已经拉取过一次镜像了,界面可能和大家不一样)
打开 ContainerManager ,在左侧菜单选择【项目】,再点击【新建】
填入以下内容:
【项目名称】:(随便填,自己认识就好)
【路径】:(用于存放持久化数据的地方,路径自己认识就好,建议设置放到固态硬盘的文件夹里,这里主要是用于缓存镜像)
【来源】:创建 docker-compose.yml
下方输入框粘贴以下配置文件:
services:
kspeeder:
image: linkease/kspeeder:latest
container_name: kspeeder
ports:
- "5443:5443"
- "5003:5003"
volumes:
- ./kspeeder-data:/kspeeder-data
- ./kspeeder-config:/kspeeder-config
restart: unless-stopped
然后一路点击下一步,最后点完成,就会开始构建
接着你就会发现,构建失败的报错Σ(っ °Д °;)っ
不要慌,我们只需要打开前面设置的【路径】,在该【路径】的文件夹下新建如图所示的两个空白文件夹即可解决.
kspeeder-config
kspeeder-data
创建完成后再次【构建】并【启动】即可。
启动完成后我们在浏览器输入 http://[群晖IP]:5003 即可访问 Kspeeder 的状态页面。
第三步:配置反向代理(最重要!!!)
根据 Kspeeder 的文档说明,理论上我们完成上面一步就可以直接将 Kspeeder 配置为镜像服务地址
将 https://registry.linkease.net:5443
添加到 dockerd.json
文件的 registry-mirrors
字段即可
❗但是由于未知原因,带端口的镜像服务地址会触发一个神秘问题,导致无法保存(如下图所示),且使用SSH强制修改 dockerd.json
文件也会被自动回退至上一次的结果,这导致 ContainerManager 无法使用 Kspeeder 镜像服务。
✨本教程实际就是为了解决此问题而编写的。
我们打开【控制面板】-【登录门户】-【高级】-【反向代理服务器】
新增如图所示的规则并保存即可。
第四步:配置ContainerManager的Docker镜像仓库镜像
打开 ContainerManager 控制面板,点击【镜像仓库】-【设置】-【编辑】
勾选【启用镜像仓库镜像】,在下方URL输入 https://registry.linkease.net
勾选【信任的SLL自我签署证书】
点击【应用】会保存设置并自动重启 Docker 服务
配置完成后 ContainerManager 还是无法获取到注册表的,不过没有关系,我们可以使用SSH客户端输入docker pull
来拉取我们想要的镜像,而且项目构建等自动拉取Docker镜像的操作现在也可以正常使用了。
如何使用docker pull拉取我们想要的镜像?
首先打开SSH客户端连接我们的群晖,输入以下命令和管理员密码即可拉取指定镜像了
sudo docker pull [镜像名称]
以 openlist 为例,输入以下命令(此处由于我已经拉取过了,所以被跳过了)
sudo docker pull openlistteam/openlist
我们再去查看 ContainerManager 的【镜像】,就会发现 openlistteam/openlist:latest
已经出现在镜像列表里了,接着我们就可以像往常一样创建容器了。
还是不会配置嘛...(>人<;)
如果您遇到了难以解决的问题,可以在评论区留下您的问题与大家一同讨论。
如果您实在无法成功配置,也可以扫描下方二维码,获取付费远程协助。
- 4
- 0
-
分享