上一期我发布了docker-hub-proxy的文章后,有朋友私信我,说感觉这个方法还是有点太复杂了。

 

这位网友在电脑上通过小猫咪可以实现魔法上网。但是因为技术水平和担心网络环境的稳定问题,在路由器和NAS上就没有再折腾魔法通道,以至于在NAS上拉取Docker时屡屡受挫。

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

正好我还真知道一个方案,要解决这个需求,可以利用一款极其轻量、好用的开源代理工具——HubProxy (sky22333/hubproxy)。

https://github.com/sky22333/hubproxy

HubProxy的本质是一个中转代理服务器。当你向它请求镜像时,它会先去官方的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:latest
    container_name: hubproxy
    restart: always
    ports:
      # 冒号左边修改为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:7890
      
    volumes:
      # 冒号左侧替换为你刚才新建 config.toml 文件的绝对路径
      - /share/Container/hubproxy/config.toml:/app/config.toml:ro
      
    logging:
      # 限制日志文件大小,防止挤爆NAS硬盘
      driver: json-file
      options:
        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、需要拉取镜像的时候,临时做好准备工作。