应对群晖 NAS 无法访问 Docker Hub 官方镜像的问题

前言

群晖 NAS 是一款功能强大的网络存储设备,支持通过 Docker 套件安装和运行各种应用。然而,由于某些原因,群晖 NAS 可能无法直接访问 Docker Hub 官方镜像。本文将介绍如何通过在局域网内的另一台主机上设置代理,让群晖 NAS 能够访问 Docker Hub 官方镜像。

前置要求

  • 一台群晖 NAS 设备,已安装 Docker 套件
  • 局域网内的另一台主机,可以访问 Docker Hub 官方镜像
  • 在局域网内主机上安装并配置代理服务器

Step 1: 配置局域网内主机的代理服务器

  1. 在局域网内主机上安装并配置选择的代理服务器,如 Shadowsocks 或 V2Ray。
  2. 确保代理服务器正常运行,并监听在局域网内主机的特定端口(如 1080)。
  3. 勾选。

Step 2: 在群晖 NAS 上配置 Docker 代理

方法一 :设置群晖系统代理

在运行代理服务的主机上,开启”允许来自局域网的连接“



例如,群晖NAS和运行代理服务的主机在同一家庭路由器下,可能是192.168.1.100
群晖NAS和运行代理服务的主机在zotero或tailscale 组成的网络内,可能是172.X.X.X,100.X.X.X。

注意,当使用群晖系统代理服务,而运行代理服务的主机不在线,群晖可能无法访问网络。

方法二:单独设置Docker代理

  1. 通过 SSH 登录到群晖 NAS,或在群晖 DSM 的 “Control Panel” 中打开 “Terminal & SNMP”。
  2. 执行以下命令,为 Docker 设置 HTTP 代理:
    1
    2
    sudo mkdir -p /etc/systemd/system/docker.service.d
    sudo echo -e "[Service]\nEnvironment=\"HTTP_PROXY=http://<proxy_host_ip>:<proxy_port>\"" > /etc/systemd/system/docker.service.d/http-proxy.conf
    <proxy_host_ip><proxy_port> 替换为局域网内主机的 IP 地址和代理服务器的端口号。
  3. 执行以下命令,为 Docker 设置 HTTPS 代理:
    1
    sudo echo -e "[Service]\nEnvironment=\"HTTPS_PROXY=http://<proxy_host_ip>:<proxy_port>\"" > /etc/systemd/system/docker.service.d/https-proxy.conf
  4. 重新加载 systemd 配置并重启 Docker 服务:
    1
    2
    sudo systemctl daemon-reload
    sudo systemctl restart docker

Step 3: 验证代理设置

  1. 在群晖 NAS 上打开 Docker 套件。
  2. 选择 “注册表/Registry”,搜索一个官方镜像,如 “ubuntu”。
  3. 如果可以成功搜索并下载官方镜像,则代理设置生效。

其他解决方法:

使用换源的方式访问docker 的镜像源,参见:关于Docker官方镜像仓库被墙的一些解决办法 群晖已修复! - 我不是矿神,但是似乎不支持群晖DSM 6。

总结:

通过在局域网内的另一台主机上设置代理,并在群晖 NAS 上配置 Docker 代理设置,可以成功解决群晖 NAS 无法访问 Docker Hub 官方镜像的问题。这种方法不仅适用于群晖 NAS,也可以应用于其他无法直接访问 Docker Hub 的设备或网络环境。