滔哥有点菜
滔哥有点菜
发布于 2025-12-23 / 18 阅读
0
0

群晖 DSM 7.2+ Docker 代理配置完整教程(解决dc拉取问题)

📖 前言

在群晖 DSM 7.2 及以上版本中,Docker 的代理配置发生了变化。传统方法(如控制面板代理设置)对 Docker 不再生效。本教程将详细介绍两种有效的配置方法:SSH 命令行方法和 1Panel 可视化方法。


🎯 问题背景

  • 群晖控制面板的代理设置对 Docker 无效

  • Docker 图形界面(注册表)拉取镜像失败

  • docker pull 命令需要代理才能正常工作


📋 配置前准备工作

1. 确认群晖版本

  • DSM 7.2 或更新版本

  • Docker 套件已安装

2. 准备代理信息

  • 代理服务器地址:例如 127.0.0.1:20171(本地 V2Ray)

  • 确认代理服务器正常运行

3. 启用 SSH(方法一需要)

  • 控制面板 → 终端机和 SNMP → 启用 SSH 服务


方法一:通过 SSH 命令行配置

🚀 步骤 1:SSH 登录群晖

# 使用管理员账号连接
ssh admin@你的群晖IP

# 输入密码后,切换到 root 用户
sudo -i
# 再次输入管理员密码

🛡️ 步骤 2:备份原配置文件

# 备份 Docker 服务文件
cp /usr/local/lib/systemd/system/pkg-ContainerManager-dockerd.service /usr/local/lib/systemd/system/pkg-ContainerManager-dockerd.service.backup

# 创建备份时间戳
echo "备份时间: $(date)" > /usr/local/lib/systemd/system/backup_info.txt

📝 步骤 3:编辑配置文件

# 使用 vi 编辑器打开文件
vi /usr/local/lib/systemd/system/pkg-ContainerManager-dockerd.service

✏️ 步骤 4:添加代理配置

在文件中找到 [Service] 部分,添加以下三行:

[Service]
# 在 Type=notify 上方或下方添加以下三行:
Environment="HTTP_PROXY=http://127.0.0.1:20171"
Environment="HTTPS_PROXY=http://127.0.0.1:20171"
Environment="NO_PROXY=localhost,127.0.0.0/8,192.168.0.0/16,172.16.0.0/12,10.0.0.0/8"
Type=notify
# ... 其他配置保持不变

💾 步骤 5:保存文件

在 vi 编辑器中:

  1. ESC 键退出编辑模式

  2. 输入 :wq 然后按 Enter 保存并退出

🔄 步骤 6:应用配置

# 重新加载 systemd 配置
systemctl daemon-reload

# 重启 Docker 服务
systemctl restart pkg-ContainerManager-dockerd.service

# 等待几秒,查看服务状态
systemctl status pkg-ContainerManager-dockerd.service

✅ 步骤 7:验证配置

# 检查环境变量
systemctl show pkg-ContainerManager-dockerd.service --property Environment

# 测试拉取镜像
docker pull nginx:alpine

# 验证代理生效
docker info | grep -i proxy

方法二:通过 1Panel 可视化配置

🌐 步骤 1:登录 1Panel

  1. 打开浏览器,访问 1Panel 地址

  2. 使用管理员账号登录

📁 步骤 2:打开文件管理器

  1. 在左侧菜单点击"文件"

  2. 在路径栏输入:/usr/local/lib/systemd/system/

  3. 按 Enter 键进入该目录

🗂️ 步骤 3:备份原文件

  1. 找到 pkg-ContainerManager-dockerd.service 文件

  2. 右键点击文件,选择"复制"

  3. 在空白处右键,选择"粘贴"

  4. 将副本重命名为:pkg-ContainerManager-dockerd.service.backup

✨ 步骤 4:编辑配置文件

  1. 双击 pkg-ContainerManager-dockerd.service 文件打开编辑器

  2. 使用搜索功能(Ctrl+F)查找 [Service]

🎨 步骤 5:添加代理配置

[Service] 部分添加以下三行:

[Service]
# 在 Type=notify 之前或之后添加:
Environment="HTTP_PROXY=http://127.0.0.1:20171"
Environment="HTTPS_PROXY=http://127.0.0.1:20171"
Environment="NO_PROXY=localhost,127.0.0.0/8,192.168.0.0/16,172.16.0.0/12,10.0.0.0/8"

示例完整段落:

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:20171"
Environment="HTTPS_PROXY=http://127.0.0.1:20171"
Environment="NO_PROXY=localhost,127.0.0.0/8,192.168.0.0/16,172.16.0.0/12,10.0.0.0/8"
Type=notify
ExecStart=/var/packages/ContainerManager/target/usr/bin/dockerd --config-file /var/packages/ContainerManager/etc/dockerd.json
# ... 其他配置

💾 步骤 6:保存文件

  1. 点击编辑器右上角的"保存"按钮

  2. 关闭编辑器

🖥️ 步骤 7:打开终端执行命令

  1. 在 1Panel 左侧菜单点击"终端"

  2. 在新的终端窗口中执行:

# 重新加载 systemd 配置
systemctl daemon-reload

# 重启 Docker 服务
systemctl restart pkg-ContainerManager-dockerd.service

# 检查服务状态
systemctl status pkg-ContainerManager-dockerd.service

🧪 步骤 8:验证配置

在 1Panel 终端中继续执行:

# 查看环境变量
systemctl show pkg-ContainerManager-dockerd.service --property Environment

# 清理 Docker 缓存
docker system prune -a -f

# 测试拉取镜像
docker pull gdy666/lucky:v2

# 查看拉取日志
docker events --since '2m' --until 'now' | grep pull

🔍 两种方法对比

特点

SSH 命令行方法

1Panel 可视化方法

难度

中(需要命令行基础)

低(图形界面操作)

速度

适合人群

熟悉 Linux 用户

所有用户

文件编辑

vi/vim 编辑器

可视化编辑器

语法高亮

无/简单

撤销功能

有限

完整

备份恢复

手动命令

图形化操作


✅ 配置验证清单

基础验证

  • 配置文件已正确修改

  • systemctl daemon-reload 已执行

  • Docker 服务已重启

  • 服务状态显示正常

代理验证

  • systemctl show 显示代理环境变量

  • docker pull 可以拉取镜像

  • V2Ray 代理服务器正在运行

  • 代理端口 20171 可访问

功能验证

  • Docker 容器可以正常启动

  • 容器内网络访问正常

  • 镜像拉取速度正常

  • 没有网络超时错误


🛠️ 故障排除指南

问题 1:服务启动失败

# 查看详细错误日志
journalctl -u pkg-ContainerManager-dockerd.service -n 50 --no-pager

# 恢复备份文件
cp /usr/local/lib/systemd/system/pkg-ContainerManager-dockerd.service.backup /usr/local/lib/systemd/system/pkg-ContainerManager-dockerd.service
systemctl daemon-reload
systemctl restart pkg-ContainerManager-dockerd.service

问题 2:代理不生效

# 测试代理服务器
curl -x http://127.0.0.1:20171 https://hub.docker.com -I

# 检查 V2Ray 运行状态
docker ps | grep v2ray  # 如果是容器运行
ps aux | grep v2ray     # 如果是系统服务

# 检查端口监听
netstat -tlnp | grep :20171

问题 3:镜像拉取缓慢

# 添加国内镜像加速器
vi /var/packages/Docker/etc/dockerd.json

# 添加以下内容:
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
  ]
}

# 重启 Docker 服务
systemctl restart pkg-ContainerManager-dockerd.service

问题 4:群晖重启后配置丢失

# 创建持久化配置
mkdir -p /etc/systemd/system/docker.service.d/
cat > /etc/systemd/system/docker.service.d/proxy.conf << EOF
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:20171"
Environment="HTTPS_PROXY=http://127.0.0.1:20171"
Environment="NO_PROXY=localhost,127.0.0.0/8,192.168.0.0/16,172.16.0.0/12,10.0.0.0/8"
EOF

# 重新加载配置
systemctl daemon-reload
systemctl restart pkg-ContainerManager-dockerd.service


评论