在Windows主机上的Docker容器中运行cron

时间:2019-05-28 11:48:07

标签: docker cron dockerfile docker-for-windows

我在尝试使容器运行cronjob时遇到一些问题。我可以看到cron在容器中使用top运行,但是它没有写入日志文件,如以下示例所示。该文件为空。

我在这里已经阅读了相同问题的答案:

但是我无法使任何建议生效。例如,我从这里使用了dockerfile:https://github.com/Ekito/docker-cron/

FROM ubuntu:latest
MAINTAINER docker@ekito.fr

# Add crontab file in the cron directory
ADD crontab /etc/cron.d/hello-cron

# 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

#Install Cron
RUN apt-get update
RUN apt-get -y install cron


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

crontab:

* * * * * root echo "Hello world" >> /var/log/cron.log 2>&1
# Don't remove the empty line at the end of this file. It is required to run the cron job

它在我的计算机上不起作用(Windows 10)。显然还有一个Windows特有的问题,也有人报告过:https://github.com/Ekito/docker-cron/issues/3

要测试是否只是我做错了事,我尝试在运行ubuntu(因此是ubuntu主机而不是Windows主机)的虚拟机中执行相同的操作,并按预期工作。日志文件已按预期扩展。

那我该怎么做才能使这项工作成功?

我尝试写入已安装(绑定)的文件夹并制作要写入的卷。都不起作用。

1 个答案:

答案 0 :(得分:0)

我也有这个问题。 我的解决方法是使用Task Scheduler运行.bat文件来代替启动

使用任务计划程序https://active-directory-wp.com/docs/Usage/How_to_add_a_cron_job_on_Windows.html


hello.bat

docker run hello-world

TaskScheduler操作

cmd /c hello.bat >> hello.log 2>&1

希望此帮助:)