Docker容器中的cron任务没有被执行

我有这个Dockerfile (我正在使用miniconda只是因为我想安排一些python脚本,但它是一个debian:jessie docker镜像):

 FROM continuumio/miniconda:4.2.12 RUN mkdir -p /workspace WORKDIR /workspace ADD volume . RUN apt-get update RUN apt-get install -y cron ENTRYPOINT ["/bin/sh", "/workspace/conf/entrypoint.sh"] 

保持容器活着的脚本entrypoint.sh是这样的:

 #!/usr/bin/env bash echo ">>> Configuring cron" service cron start touch /var/log/cron.log mv /workspace/conf/root /var/spool/cron/crontabs/root chmod +x /var/spool/cron/crontabs/root crontab /var/spool/cron/crontabs/root echo ">>> Done!" tail -f /var/log/cron.log 

从有关supervisor的docker文档( https://docs.docker.com/engine/admin/using_supervisord/ )看起来这可能是一个选项以及bash脚本选项(就像我的例子),这就是为什么我决定去bash脚本并忽略主pipe。

而cron的细节/workspace/conf/root是这样的:

 * * * * * root echo "Hello world: $(date +%H:%M:%S)" >> /var/log/cron.log 2>&1 

(在底部是一个空行\n

我无法find一个方法来查看每个分钟附加到/var/log/cron.log中的Hello world: $(date +%H:%M:%S) ,但是对于我来说,所有的cron / crontab设置都是正确的。

当我检查容器的日志时,我可以看到:

 >>> Configuring cron [ ok ] Starting periodic command scheduler: cron. >>> Done! 

另外,当login到正在运行的容器时,我可以看到正在运行的cron守护进程:

 root@2330ced4daa9:/workspace# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 4336 1580 ? Ss+ 13:06 0:00 /bin/sh /workspace/conf/entrypoint.sh root 14 0.0 0.0 27592 2096 ? Ss 13:06 0:00 /usr/sbin/cron root 36 0.0 0.0 5956 740 ? S+ 13:06 0:00 tail -f /var/log/cron.log root 108 0.5 0.1 21948 3692 ? Ss 13:14 0:00 bash root 114 0.0 0.1 19188 2416 ? R+ 13:14 0:00 ps aux 

我究竟做错了什么?

你确定Cronjob有执行权吗?

 chmod 0644 /var/spool/cron/crontabs/root