docker - Dockerfile - Docker容器不运行crontab

98 4

我有一个基于ubuntu的dockerfile镜像,我似乎找不到问题的根源。

这里是Dockerfile:


FROM snipe/snipe-it:latest



ENV TZ=America/Toronto



RUN apt-get update 


 && apt-get install awscli -y 


 && apt-get clean 


 && apt-get install cron -y 


 && rm -rf /var/lib/apt/lists/*



RUN mkdir /var/www/html/backups_scripts /var/www/html/config/scripts



COPY config/crontab.txt /var/www/html/backups_scripts


RUN /usr/bin/crontab /var/www/html/backups_scripts/crontab.txt



COPY config/scripts/backups.sh /var/www/html/config/scripts



CMD ["cron","-f"]



最后一个命令不工作,当我检查容器内的cron任务时,一旦删除命令,我就会收到此消息:


root@fcfb6052274a:/var/www/html# /etc/init.d/cron status


 * cron is not running



即使我在crontab之前启动cron进程,crontab仍然没有启动,

我该如何解决这个问题? 谢谢你

时间: 原作者:

100 2

你需要以不同的方式处理此问题,你必须记住容器映像和容器不是虚拟机。它们是一个单一的进程,在整个生命周期中都会启动,并且维护。因此,容器中不存在后台进程(如cron)。

你想要在do_the_thing.sh上执行的操作,然后使用docker run命令。

在主机上,可以将项添加到crontab :


# m h dom mon dow user command


0 */2 * * * root docker run --rm myrepo/task



原作者:
68 1

容器实际上非常像虚拟机,而且它们通常同时运行许多进程,请参见下面的简单例子:


$ docker run -it -h ubuntu-container ubuntu # lets name the host.


root@ubuntu-container$ ps aw # Shows bash and ps processes running.


root@ubuntu-container$ sleep 600 & # Ampersand to launch in background.


root@ubuntu-container$ ps aw # Now shows sleep also running.



原作者:
...