群晖设置Docker容器定时重启

LG5 2026-1-10 6 1/10

一、获取容器 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 -
Tag:

LG5

1月10日10:33

最后修改:2026年1月10日
0

非特殊说明,本博所有文章均为博主原创。