每一个问题都是机会

【新手教程】群晖 DSM 7.2 为 Docker 设置 HTTP/HTTPS/SOCKS5 代理

文章目录
  1. 为什么需要代理?

如果你使用的是群晖 NAS (本文在 DSM 7.2 版本测试通过),可能会遇到无法下载 Docker 镜像的情况。通过配置代理,你可以轻松绕过这些限制,顺利下载和更新镜像。本教程教你如何为 Docker 设置代理,让 Docker 本身的网络请求走你指定的 HTTP 或 SOCKS5 代理服务器。

为什么需要代理?

国内目前网络环境可能会限制你访问 Docker 镜像库(例如 docker pull 等操作),尤其是官方的国外镜像库。配置 HTTP 或 SOCKS5 代理可以让你绕过这些限制,顺畅地拉取镜像。


操作步骤

1. 登录到群晖 NAS

首先,你需要通过 SSH 连接到你的群晖 NAS。在 DSM 中,进入 控制面板 > 终端机与 SNMP,启用 SSH 服务。然后打开命令行工具(Windows 用 PuTTY,Mac 或 Linux 用 Terminal),输入以下命令:(命令回车执行)

[CMD] Windows SSH 连接服务器教程(系统自带方式)

ssh <用户名>@<NAS_IP>

替换 <用户名> 为你的群晖管理员用户名,<NAS_IP> 为 NAS 的 IP 地址。接着切换到 root 权限(需要输入管理员密码):

sudo -i

2. 为 Docker 创建一个配置文件夹

在 SSH 终端执行以下命令:

mkdir -p /etc/systemd/system/pkg-ContainerManager-dockerd.service.d

3. 创建并编辑代理配置文件

创建一个配置文件来存放代理信息:

touch /etc/systemd/system/pkg-ContainerManager-dockerd.service.d/http-proxy.conf

用 vi 文本编辑器打开它:

vi /etc/systemd/system/pkg-ContainerManager-dockerd.service.d/http-proxy.conf

进入插入模式:按下 i 键,这时你会看到底部出现 — INSERT — 的提示,表示可以开始编辑文本。

输入或粘贴内容: 在文件中添加以下内容,设置 HTTP 和 HTTPS 代理:(shift+insert可粘贴)

[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"

如果需要认证,格式如下:

[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"

注意:替换 192.168.1.3:10808 和 用户名:密码 为你自己的信息。

保存并退出:

  • 按 Esc 键,退出插入模式。
  • 输入 :wq 然后按 Enter 键,表示保存并退出。

如果在 vi 中不小心进入了错误模式,你可以按 Esc 键,然后输入 :q! 再按 Enter 退出而不保存任何更改。


4. 重新加载并重启 Docker 服务

完成配置后,需要重新加载一下配置文件,并重启 Docker 服务:

systemctl daemon-reload
systemctl restart pkg-ContainerManager-dockerd.service

5. 验证代理是否设置成功

接下来,我们验证一下代理设置是否生效。使用以下命令查看 Docker 的环境变量:

systemctl show --property=Environment pkg-ContainerManager-dockerd.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

6. 测试 Docker 代理

最后,我们通过拉取镜像测试代理是否生效。运行以下命令:

docker pull busybox

如果镜像能正常下载,说明 Docker 已经通过代理成功连接网络。

另外如果要在 Docker 容器内通过代理访问网络,你可以在运行 Docker 容器时,设置环境变量来指定代理,例如:

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

总结

恭喜!你已经成功为 Docker 设置了代理。在受限网络环境中,代理是非常有用的工具,帮助你顺利拉取镜像。按照本教程,你只需登录 NAS,创建并编辑配置文件,然后重启 Docker 服务,就能让 Docker 使用代理了。

希望这个简单的指南对你有帮助!赶快试试吧~

参考

为群晖 Container Manager 配置代理

怎样才能让我的 docker 走代理

赞(2)
未经允许不得转载:技术好学屋 » 【新手教程】群晖 DSM 7.2 为 Docker 设置 HTTP/HTTPS/SOCKS5 代理
分享到: 更多 (0)

评论 6

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #0

    一步步来的,就是不行。

    iceloon4周前 (11-29)回复
  2. #0

    如果不需要了,如何恢复呢?

    losslove4周前 (11-28)回复
    • 依次执行:
      sudo -i
      rm -f /etc/systemd/system/pkg-ContainerManager-dockerd.service.d/http-proxy.conf
      systemctl daemon-reload
      systemctl restart pkg-ContainerManager-dockerd.service

      老D1周前 (12-16)回复
  3. #0

    确认成功了,第五步确认已经修改完成了,可是还是不能再群晖控制面板里面网络关闭代理,不然docker注册表依然访问不了。拉去速度未有改善,我之前就是群晖网络添加代理,然后注册表同时添加镜像,我不知道现在按您的改了有什么不同,好像不开群晖代理还是未生效

    一只氧气2个月前 (10-27)回复
    • 第六步没成呗, 可能你群晖就访问不到代理, curl -x http://xxx:1080 http://ipinfo.io 试试呗

      老D2个月前 (11-06)回复