【问题标题】:cron task in docker container not being executeddocker容器中的cron任务未执行
【发布时间】:2017-08-28 09:13:00
【问题描述】:

我有这个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 (https://docs.docker.com/engine/admin/using_supervisord/) 的 docker 文档看来,这可能是一个选项以及 bash 脚本选项(如我的示例),这就是为什么我决定使用 bash 脚本并忽略主管。

而cron详情/workspace/conf/root的内容是这样的:

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

(底部为空行\n

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

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

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

另外,当登录到正在运行的容器时,我可以看到 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

我做错了什么?

【问题讨论】:

  • Docker 是一个“类固醇进程”。如:单个进程。不是虚拟机。您不能假设 initsystemd 运行只是为了移交 cron 守护程序任务。
  • 从关于 supervisor 的 docker 文档看来,这可能是一个选项以及 bash 脚本选项(如我的示例),这就是我决定使用 bash 脚本的原因并忽略supervisor。我不确定我明白为什么那个 bash 脚本是错误的。我还尝试在该 bash 脚本中将 service cron start 行替换为 cron 行,但没有成功。

标签: docker cron crontab scheduling


【解决方案1】:

你确定 Cronjob 有执行权吗?

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

【讨论】:

    猜你喜欢
    • 2018-12-15
    • 1970-01-01
    • 2019-03-17
    • 2014-04-28
    • 1970-01-01
    • 2021-09-01
    • 2018-04-20
    • 2019-05-09
    • 1970-01-01
    相关资源
    最近更新 更多