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

时间:2015-07-27 13:15:45

标签: cron docker debian crontab

我的debian docker容器里有一些cronjobs。他们不会自动启动原因?

我是否需要做一些变通办法?

4 个答案:

答案 0 :(得分:3)

首先在docker容器中运行cron守护程序。登录到容器时,在shell中运行以下命令:

cron

然后,工作将定期开始。

答案 1 :(得分:2)

你在哪里开始使用cron?在 Dockerfile 中?在RUN内执行此操作将无法正常工作,因为该进程将无法继续运行。你需要这样做,例如通过CMD。更好的想法是使用suzpervisord

答案 2 :(得分:2)

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

例如,运行'压力'在您的容器中每5分钟应用一次,您可以添加以下内容(当然用您的容器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

答案 3 :(得分:0)

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

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

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

!/ bin / bash

/etc/init.d/cron start