定时启动和停止docker容器

在 Linux 系统下,你可以使用 cron 任务来定时启动 Docker 容器。以下是一个简单的步骤来设置定时启动 Portainer 容器:

第一步,打开终端;

第二步,输入 crontab -e 命令来编辑 cron 文件。如果这是你第一次运行这个命令,它可能会让你选择一个编辑器,例如 nano 或 vi;

强制使用nano编辑器的方法:

EDITOR=nano crontab -e

第三步,在打开的文件中,你可以添加一个新的 cron 任务。每个 cron 任务都有五个时间和日期字段,后面跟着要运行的命令。例如,如果你想要每天早上 6 点启动 Portainer 容器,你可以添加以下行:

0 6 * * * /usr/bin/docker start portainer

这行命令的意思是在每天的第 6 小时(即早上 6 点)执行 /usr/bin/docker start portainer 命令。

注意:你需要确保 Docker 的路径是正确的。你可以通过在终端中输入 which docker 来查看 Docker 的路径。

群晖的docker路径就是:/usr/local/bin/docker

第四步:保存并关闭文件。在 nano 编辑器中,你可以通过按 Ctrl+X,然后按 Y,最后按 Enter 来保存并关闭文件。

第五步:你可以通过输入 crontab -l 命令来查看你的 cron 任务。

这样,你的 Portainer 容器就会在每天早上 6 点启动了。如果你需要在不同的时间启动容器,或者启动不同的容器,你可以修改 cron 任务的时间和日期字段,以及要运行的命令。

附:时间表达式

当你在 cron 任务中设置时间和日期字段时,它们控制了任务执行的时间。在这个特定的例子中,0 6 * * * 表示任务将在每天的第六个小时(早上6点)执行。

让我们来解释这个时间表达式的各个字段的含义:

  • 第一个字段是分钟字段(Minutes):它表示一个小时中的哪一分钟执行任务。在这里,它是 0,表示任务在每个小时的第 0 分钟执行。

  • 第二个字段是小时字段(Hours):它表示一天中的哪个小时执行任务。在这里,它是 6,表示任务在每天的第 6 个小时执行。

  • 第三个字段是日期字段(Day of the month):它表示一个月中的哪一天执行任务。在这里,它是 *,表示每天都执行任务。

  • 第四个字段是月份字段(Month):它表示一年中的哪个月执行任务。在这里,它是 *,表示每个月都执行任务。

  • 第五个字段是星期字段(Day of the week):它表示一周中的哪一天执行任务。在这里,它是 *,表示每一天都执行任务。

总结起来,0 6 * * * 表达式表示每天的第六个小时(早上6点)执行任务,无论是哪一天、哪一个月或是星期几。这就是为什么这个表达式被用来设置每天早上6点启动定时任务的含义。

以下为时间表达式的具体规范:

字段 是否必填 允许值 允许特殊字符 备注
Seconds 0–59 *, - 标准实现不支持此字段。
Minutes 0–59 *, -
Hours 0–23 *, -
Day of month 1–31 *, - ? L W ? L W只有部分软件实现了。
Month 1–12或JAN–DEC *, -
Day of week 0–7或SUN–SAT *, - ? L # ? L #只有部分软件实现了。
Year 1970–2099 *, - 标准实现不支持此字段。

注:

  • LL 字符在时间表达式中表示月份或星期的最后一天。例如,7L 表示月份中的最后一个星期天,L-3 表示一个月中的倒数第三天。

  • WW 字符在时间表达式中表示最近的工作日(周一至周五)。它用于日期字段(Day of month)中。例如,15W 表示离指定日期最近的工作日。

  • ## 字符在时间表达式中用于指定月份中的第几个星期几。例如,2#3 表示月份中的第三个星期二。

  • ?? 字符在时间表达式中用于指示日期字段(Day of month)或星期字段(Day of week)可以是任意值。它在某些情况下用于替代其他字段。例如,如果你想要在每月的第五个工作日执行任务,你可以使用 ? 代替星期字段,如 ? 5

这些特殊字符可以用于增加时间表达式的灵活性和精确度,以满足特定的需求。在实际使用中,它们的解释可能会因不同的调度器实现而有所差异,因此需要根据具体的调度器文档或工具来确认其准确的含义和用法。

cron表达式广泛应用于定时任务调度、自动化脚本、定时数据采集等方面。我们日常使用的青龙面板的定时任务即基于cron表达式进行设置。

THE END
分享
二维码
< <上一篇
下一篇>>