一、获取容器 ID / 名称(关键)
首先需要确认你要重启的容器名称或 ID:
1、登录群晖DSM,打开 Docker 套件 → 进入「容器」页面。
2、找到目标容器,记录下「名称」(如my_nginx)或「容器 ID」(一串字母数字)。
二、创建定时任务
1、打开群晖 DSM 的 控制面板 → 找到「任务计划」(部分版本在「系统」分类下)。
2、点击左侧「新增」→ 选择「计划的任务」→ 「用户定义的脚本」。
三、配置任务基本信息
| 配置项 | 推荐设置 | 说明 |
|---|---|---|
| 任务名称 | 例如「重启 Docker 容器 - my_nginx」 | 便于识别,避免重名 |
| 用户 | root | 必须用 root,否则无 Docker 操作权限 |
| 启用任务 | 勾选 | 确保任务生效 |
四、设置定时规则
1、切换到「计划」标签页,根据需求设置执行频率:
-
- 简单周期:比如「每天」→ 「小时」选
3、「分钟」选0(凌晨 3 点)。 - 复杂周期:比如「每周」→ 勾选「周一」,时间选
12:00(每周一中午)。 - 群晖的定时界面可视化,比 crontab 更易操作,按需选择即可。
- 简单周期:比如「每天」→ 「小时」选
五、编写执行脚本
1、切换到「任务设置」标签页 → 在「用户定义的脚本」输入框中,粘贴以下脚本:
# 替换为你的容器名称/ID(二选一即可)
CONTAINER_NAME="my_nginx"
# CONTAINER_ID="abc123def456"
# 日志保存路径(可自定义,建议放在共享文件夹)
LOG_PATH="/volume1/docker/logs/container_restart.log"
# 记录重启时间
echo "=====================================" >> ${LOG_PATH}
echo "开始重启容器: $(date "+%Y-%m-%d %H:%M:%S")" >> ${LOG_PATH}
# 执行重启命令(使用名称或ID,注释掉其中一个)
/usr/local/bin/docker restart ${CONTAINER_NAME} >> ${LOG_PATH} 2>&1
# /usr/local/bin/docker restart ${CONTAINER_ID} >> ${LOG_PATH} 2>&1
# 检查重启结果
if [ $? -eq 0 ]; then
echo "容器重启成功: $(date "+%Y-%m-%d %H:%M:%S")" >> ${LOG_PATH}
else
echo "容器重启失败: $(date "+%Y-%m-%d %H:%M:%S")" >> ${LOG_PATH}
fi
2、关键修改:
- 将
CONTAINER_NAME替换为你的容器实际名称; LOG_PATH建议放在群晖的共享文件夹(如/volume1/docker/logs/),需先手动创建logs文件夹,避免路径不存在导致日志写入失败。关键修改:
六、保存并测试任务
1、点击「确定」保存任务。
2、测试任务是否生效:
-
- 在「任务计划」列表中选中刚创建的任务 → 点击「运行」。
- 等待几秒后,查看 Docker 容器状态(是否重启),或打开日志文件(
LOG_PATH路径)确认:
# 也可通过SSH登录群晖执行以下命令查看日志
cat /volume1/docker/logs/container_restart.log
七、简化版(无日志,快速实现)
如果不需要日志记录,可直接在「用户定义的脚本」中输入:
# 替换为你的容器名称
/usr/local/bin/docker restart my_nginx
八、注意事项
1、Docker 命令路径:群晖的 Docker 命令绝对路径是/usr/local/bin/docker,务必写全,避免任务执行时找不到命令。
2、权限问题:任务的「用户」必须选root,普通用户无操作 Docker 的权限。
3、数据安全:重启前确保容器数据已挂载到群晖共享文件夹(如/volume1/docker/),避免重启丢失数据。
4、依赖容器:如果容器依赖其他服务(如数据库容器),需按依赖顺序创建多个定时任务,或在脚本中按顺序重启。
- THE END -
最后修改:2026年1月10日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://lg5.top/1547.html
