如何将crontab保存在ubuntu docker中的文件中

时间:2016-01-23 14:34:54

标签: linux ubuntu docker cron

我使用的是docker,操作系统是Ubuntu。

如果我使用crontab -e并在那里放置数据,那么cron运行正常。

* * * * *  /var/www/daily.sh

但是如果删除容器,那么crontab也就消失了。我想以某种方式将crontab放在像crontabs.sh这样的文件中,然后将其挂载到容器中,这样如果我创建容器,那么我的cron仍然存在。

我不知道我需要在哪个位置安装,以便cron正常运行。

之类的东西

/myhost/code/crontabs.sh: /etc/crons.daily

1 个答案:

答案 0 :(得分:1)

正如this answer中所述,您可以复制文件,添加到Dockerfile

FROM ubuntu:latest
MAINTAINER docker@ekito.fr

# Add crontab file in the cron directory
COPY crontab /etc/cron.d/crons.daily

# Give execution rights on the cron job
RUN chmod 0644 /etc/cron.d/hello-cron

# Create the log file to be able to run tail
RUN touch /var/log/cron.log

# Run the command on container startup
CMD cron && tail -f /var/log/cron.log

(来源:示例“Run a cron job with Docker”(Julien Boulay

这样,您的图像将始终包含正确的cron定义。

您可以使用cronsandbox.com初始化您要复制到图片的本地文件“crontab”的内容。

在您的情况下:0 23 * * *

如果您不想在每次更改时创建新图像,请删除COPY行,并在运行时挂载该文件:

docker run -v crontab:/etc/cron.d/hello-cron -n mycontainer myimage

这样,本地文件crontab就像/etc/cron.d/hello-cron(或您想要的任何其他名称)一样在容器中安装。
无论何时更改它,请停止并重新启动容器。