外观
Container Manager 设置代理
约 734 字大约 2 分钟
2026-08-26
概述
在国内网络环境下,访问 Docker 官方镜像库经常超时或拉取失败。为群晖 DSM 7.2 的 Container Manager(即 Docker 服务)配置 HTTP 或 SOCKS5 代理,可解决镜像拉取问题。本文记录通过 systemd drop-in 环境变量为 Container Manager 的 dockerd 设置代理的方法,并给出实测验证链路。
笔记
Synology 的 dockerd 对 daemon.json 的 proxies 字段支持不可靠(需 Docker ≥ 23,且 GUI 会重写 daemon.json)。DSM 7.2 建议统一使用 systemd drop-in 环境变量方案,对所有版本生效,且不受 GUI 重写影响。
一、SSH 登录群晖
在 DSM 控制面板开启 SSH 服务(控制面板 → 终端机与 SNMP)。
连接 NAS(Windows 可用 PuTTY,Mac/Linux 直接用 Terminal):
ssh <用户名>@<NAS_IP>切换到 root:
sudo -i
二、创建 Docker 服务配置目录
mkdir -p /etc/systemd/system/pkg-ContainerManager-dockerd.service.d三、创建并编辑代理配置文件
新建配置文件:
touch /etc/systemd/system/pkg-ContainerManager-dockerd.service.d/http-proxy.conf编辑文件:
vi /etc/systemd/system/pkg-ContainerManager-dockerd.service.d/http-proxy.conf按
i进入插入模式,按代理类型填入以下内容(将192.168.1.3:10808及认证信息替换为你自己的代理):HTTP/HTTPS 代理:
[Service] Environment="HTTP_PROXY=http://192.168.1.3:10808" Environment="HTTPS_PROXY=http://192.168.1.3:10808" Environment="NO_PROXY=localhost,127.0.0.1"SOCKS5 代理:
[Service] Environment="HTTP_PROXY=socks5://192.168.1.3:10808" Environment="HTTPS_PROXY=socks5://192.168.1.3:10808" Environment="NO_PROXY=localhost,127.0.0.1"带认证的 SOCKS5 代理:
[Service] Environment="HTTP_PROXY=socks5://用户名:密码@192.168.1.3:10808" Environment="HTTPS_PROXY=socks5://用户名:密码@192.168.1.3:10808" Environment="NO_PROXY=localhost,127.0.0.1"
提示
SOCKS5 代理需添加 socks5:// 前缀;带认证时用户名密码写在 @ 前。
四、保存并退出 vi
- 按 Esc 退出插入模式
- 输入
:wq保存并退出 - 放弃修改输入
:q!强制退出
五、重新加载并重启 Docker 服务
systemctl daemon-reload
systemctl restart pkg-ContainerManager-dockerd.service六、验证代理是否生效
查看 dockerd 环境变量:
systemctl show --property=Environment pkg-ContainerManager-dockerd.service输出包含你的代理信息即配置成功。
拉取镜像测试:
docker pull busybox容器内代理(可选):
docker run -e http_proxy=http://your-proxy:port \ -e https_proxy=http://your-proxy:port \ -e no_proxy=localhost,127.0.0.1 \ your-image
七、检测链路(实测验证)
1. 代理连通性
# HTTP 代理
curl -x http://10.0.0.3:8888 -sI -o /dev/null -w '%{http_code}\n' https://registry-1.docker.io/v2/
# SOCKS5 代理
curl --socks5-hostname 10.0.0.3:7891 -sI -o /dev/null -w '%{http_code}\n' https://registry-1.docker.io/v2/返回 401 即链路通(未带 token 的正常响应)。
2. 代理环境变量生效
docker info 2>/dev/null | grep -i proxy应显示 HTTP Proxy:、HTTPS Proxy:、No Proxy: 三行。
3. 实测拉取
docker pull busybox # 小镜像,快速验证
docker pull nginx # ~60MB,压测真实速度警告
拉取依然超时:检查代理端口、防火墙与配置路径是否正确。 容器内网络不通:需在 docker run 时添加 -e http_proxy 等环境变量,或在 Dockerfile 中设置。