我使用的是docker,操作系统是Ubuntu。
如果我使用crontab -e
并在那里放置数据,那么cron运行正常。
* * * * * /var/www/daily.sh
但是如果删除容器,那么crontab也就消失了。我想以某种方式将crontab放在像crontabs.sh
这样的文件中,然后将其挂载到容器中,这样如果我创建容器,那么我的cron仍然存在。
我不知道我需要在哪个位置安装,以便cron正常运行。
之类的东西 /myhost/code/crontabs.sh: /etc/crons.daily
答案 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
(或您想要的任何其他名称)一样在容器中安装。
无论何时更改它,请停止并重新启动容器。