Docker 容器中的 Cronjobs 如何获取它们 运行?

Cronjobs in Docker container how get them running?

我的 debian docker 容器中有一些 cronjobs。它们不会自动启动,为什么?

我需要做一些变通办法吗?

你从哪里开始cron的?在 Dockerfile 中?在 RUN 内执行此操作将不起作用,因为该过程不会保持 运行。你需要这样做,例如通过 CMD。一个更好的主意是使用 suzpervisord.

如果您在 docker 中 运行ning 容器,您可以在 docker 主机上添加 cron 任务以在 docker 容器中执行命令。

例如,要每 5 分钟在您的容器中 运行 'stress' 应用程序,您可以将以下内容(当然替换您的容器 ID)添加到您的 crontab:

*/5 * * * * docker exec c78ddbed4ad9 /bin/sh -c 'stress -d 1 --hdd-bytes 64M --cpu 1 --io 2 --vm 2 --vm-bytes 64M --timeout 60s' >> /tmp/cronstress.log 2>&1

我运行在 docker 主机上以 root 用户身份使用它。

或者只是 运行 cron:

root@dockerhost:cron

运行 cron 守护进程首先在 docker 容器中。登录容器时,在 shell 运行 中执行命令:

cron

然后作业将定期开始。

cronjob 没有在 docker 容器中启动 logrotation。 我的 cronjob 如下所示:

30 9 * * * root /usr/sbin/logrotate /etc/logrotate.d/apache2

此外,我还在 docker 文件中添加了以下脚本作为 ENTRYPOINT 以启动 cron。

!/bin/bash

/etc/init.d/cron开始