应对群晖 NAS 无法访问 Docker Hub 官方镜像的问题
前言
群晖 NAS 是一款功能强大的网络存储设备,支持通过 Docker 套件安装和运行各种应用。然而,由于某些原因,群晖 NAS 可能无法直接访问 Docker Hub 官方镜像。本文将介绍如何通过在局域网内的另一台主机上设置代理,让群晖 NAS 能够访问 Docker Hub 官方镜像。
前置要求
- 一台群晖 NAS 设备,已安装 Docker 套件
- 局域网内的另一台主机,可以访问 Docker Hub 官方镜像
- 在局域网内主机上安装并配置代理服务器
Step 1: 配置局域网内主机的代理服务器
- 在局域网内主机上安装并配置选择的代理服务器,如 Shadowsocks 或 V2Ray。
- 确保代理服务器正常运行,并监听在局域网内主机的特定端口(如 1080)。
- 勾选。
Step 2: 在群晖 NAS 上配置 Docker 代理
方法一 :设置群晖系统代理
在运行代理服务的主机上,开启”允许来自局域网的连接“
例如,群晖NAS和运行代理服务的主机在同一家庭路由器下,可能是192.168.1.100
群晖NAS和运行代理服务的主机在zotero或tailscale 组成的网络内,可能是172.X.X.X,100.X.X.X。
注意,当使用群晖系统代理服务,而运行代理服务的主机不在线,群晖可能无法访问网络。
方法二:单独设置Docker代理
- 通过 SSH 登录到群晖 NAS,或在群晖 DSM 的 “Control Panel” 中打开 “Terminal & SNMP”。
- 执行以下命令,为 Docker 设置 HTTP 代理:将
1
2sudo 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 地址和代理服务器的端口号。 - 执行以下命令,为 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
- 重新加载 systemd 配置并重启 Docker 服务:
1
2sudo systemctl daemon-reload
sudo systemctl restart docker
Step 3: 验证代理设置
- 在群晖 NAS 上打开 Docker 套件。
- 选择 “注册表/Registry”,搜索一个官方镜像,如 “ubuntu”。
- 如果可以成功搜索并下载官方镜像,则代理设置生效。
其他解决方法:
使用换源的方式访问docker 的镜像源,参见:关于Docker官方镜像仓库被墙的一些解决办法 群晖已修复! - 我不是矿神,但是似乎不支持群晖DSM 6。
总结:
通过在局域网内的另一台主机上设置代理,并在群晖 NAS 上配置 Docker 代理设置,可以成功解决群晖 NAS 无法访问 Docker Hub 官方镜像的问题。这种方法不仅适用于群晖 NAS,也可以应用于其他无法直接访问 Docker Hub 的设备或网络环境。