大家好,我是飘雷。
上一期我发布了docker-hub-proxy的文章后,有朋友私信我,说感觉这个方法还是有点太复杂了。
免费Docker镜像站失效?部署这款开源工具,自动优选最快节点
这位网友在电脑上安装了克莱氏,通过小猫咪可以实现魔法上网。但是因为技术水平和担心网络环境的稳定问题,在路由器和NAS上就没有再折腾魔法通道,以至于在NAS上拉取Docker时屡屡受挫。

他的诉求就是想让NAS在拉取Docker时,也能利用电脑上的魔法通道,就像下图这样:

正好我还真知道一个方案,要解决这个需求,可以利用一款极其轻量、好用的开源代理工具——HubProxy (sky22333/hubproxy).
https://github.com/sky22333/hubproxyHubProxy的本质是一个中转代理服务器。当你向它请求镜像时,它会先去官方的Docker Hub把镜像拉取下来,然后再传给本地设备。
它的核心优势就是极简,无需繁琐配置,直接通过Docker Compose一键部署,就能把你的NAS变成一个专属的Docker镜像代理中转站,今天咱们就手把手教大家把它跑起来。
部署流程
这里我们来展示如何在威联通NAS上部署HubProxy,用到的设备是威联通最新的8盘位旗舰型号Qu805。

1.准备工作
正常情况下,我们通过代码就能直接拉取该项目的Docker镜像,但不幸的是,今天在写作本文时,突然发现sky22333/hubproxy这个项目已经在GitHub上处于404状态,导致对应的镜像也没法按照正常方式来拉取了。
所幸前几天我在测试的时候下载了HubProxy最新版的AMD64镜像,这里我把它上传到了网盘里,大家使用x86平台NAS的话可以直接下载,大小只有16MB,下载地址如下:
https://pan.baidu.com/s/1Yp7VVBcOBqD29iz6mHKa-Q?pwd=x83m下载该镜像后,在威联通NAS的Container Station中,依次点击「映像」——「导入」,选择保存在电脑上dockerproxy.tar文件即可。

此时可以在列表中,能看到我们刚刚导入的ghcr.io/sky22333/hubproxy映像:

接下来,我们需要在NAS上创建一个文件夹,如下图所示,这里我在/share/Container下创建了一个叫做hubproxy的文件夹,再在里面新建一个文本文档,重命名为config.toml

然后我们得在电脑上的小猫咪里打开「允许局域网连接」的功能,并且启用「系统代理」:

2.Docker Compose部署
打开威联通 Container Station,点击左侧的「应用程序」,然后点击右侧黑色「创建」按钮,输入以下代码:
services:hubproxy:image: ghcr.io/sky22333/hubproxy:latestcontainer_name: hubproxyrestart: alwaysports:# 冒号左边修改为NAS未被占用的端口(例如我改成了15000),右侧5000千万别动- "15000:5000"environment:# 因为部署在国内NAS上,必须让这个容器通过局域网代理才能连上官方Docker Hub。# 请将下面换成你局域网内的代理IP和端口(比如电脑上的Clash等)。- HTTP_PROXY=http://192.168.10.84:7890- HTTPS_PROXY=http://192.168.10.84:7890volumes:# 冒号左侧替换为你刚才新建 config.toml 文件的绝对路径- /share/Container/hubproxy/config.toml:/app/config.toml:rologging:# 限制日志文件大小,防止挤爆NAS硬盘driver: json-fileoptions:max-size: "1g"max-file: "2"

因为我们已经提前导入了HubProxy的镜像,所以部署速度非常快,紧接着就可以在Container Station中看到正在运行的应用程序和容器:


使用演示
HubProxy的部署过程非常简单,部署完成后,在浏览器输入 http://<NAS的IP>:15000(例如 http://192.168.10.70:15000),就能看到HubProxy的UI界面了。

点击「获取加速链接」,可以看到在需要拉取的镜像名称前,加入NAS的局域网域名与端口,即可进行加速。

同时HubProxy还有镜像搜索功能,这里我们可以测试一下是否可以联通Docker Hub:

使用Putty或者FinalShell,随机拉取plex测试一下:
docker pull 192.168.10.70:15000/linuxserver/plex可以看到能够拉取成功的提示,此时证明NAS端的HubProxy已经可以成功配合电脑端的小猫咪来实现Docker Hub加速功能

为了方便使用,接下来我们打开威联通的 Container Station,依次点击左侧的「存储库」 -> 「添加存储库」,填写如下内容:
提供商:选择「Docker Registry」
名称:随便起(比如hubproxy)
URL:填写刚才本机IP+前面我们自定义的端口号(如 http://192.168.10.70:15000)
点击应用。

然后我们在Container Station中提取映像时,也可以在下拉菜单里选择刚才添加的存储库,同样能够正常拉取:

总结
以上就是本期在威联通NAS中部署Docker Hub加速方案的全部内容了,感谢大家看到这里。
HubProxy这个项目在本质上是一个中转代理服务器,其实最适合在无墙环境中部署,比如阿里云部署在香港的云服务器这类。
但是我们国内的大部分NAS用户没这个网络条件,所以这里采用了配合电脑端小猫咪二次跳转的方案,来实现曲线救国的效果,希望能够帮到用得上的朋友。

这种方案只有在电脑开机,并且小猫咪开启代理+开启了局域网连接时,NAS才能成功拉取镜像。 如果电脑关机了,拉取依然会超时失败哦。
所以建议大家在集中折腾NAS、需要拉取镜像的时候,临时做好准备工作。
夜雨聆风