当前位置: 首页 > 知识库问答 >
问题:

如何在docker容器中运行cron作业?

麹凯捷
2023-03-14

我创建了一个(有注释的)github存储库,其中有一个工作的docker cron容器,它以给定的时间间隔调用一个shell脚本。

共有1个答案

岳嘉悦
2023-03-14

您可以将crontab复制到映像中,以便从所述映像启动的容器运行作业。

请参阅Julien Boulay的ekito/docker-cron中的“使用Docker运行cron作业”:

让我们创建一个名为“hello-cron”的新文件来描述我们的工作。

* * * * * echo "Hello world" >> /var/log/cron.log 2>&1
# An empty line is required at the end of this file for a valid cron file.
FROM ubuntu:latest
MAINTAINER docker@ekito.fr

RUN apt-get update && apt-get -y install cron

# Copy hello-cron file to the cron.d directory
COPY hello-cron /etc/cron.d/hello-cron
 
# Give execution rights on the cron job
RUN chmod 0644 /etc/cron.d/hello-cron

# Apply cron job
RUN crontab /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

(请参阅Gaafar的评论和如何使apt-get安装噪音更小?:
apt-get-y install-qq--force-yes cron也能工作)

Nathan Lloyd在评论中指出:

关于一个错误的快速说明:
如果您正在添加一个脚本文件并告诉cron运行它,请记住
运行chmod 0744/the_script
如果您忘记了,cron会自动失败。

 * * * * * root echo hello > /proc/1/fd/1 2>/proc/1/fd/2

将最后一个Dockerfile行替换为

CMD ["cron", "-f"]

另请参见(关于cron-f,即cron“前景”)“Docker ubuntucron-f不工作”

生成并运行它:

sudo docker build --rm -t ekito/cron-example .
sudo docker run -t -i ekito/cron-example
Hello world
Hello world

参见Jason的图像analogJ/docker-cron基于:

>

  • DockerFile正在安装cronie/crond,具体取决于发行版。

    入口点初始化/etc/environment,然后调用

    cron -f -l 2
    

  •  类似资料:
    • 问题内容: 我试图在docker容器中运行cron作业 但对我没有用 我的容器只有cron.daily和cron.weekly文件 crontab,cron.d,cron.hourly …在我的容器中不存在 crontab -e也无法正常工作 我的容器使用/ bin / bash运行 问题答案: 这是我运行我的cron容器之一的方法。 Dockerfile: crontab.txt entry.s

    • 问题内容: 我正在尝试在调用shell脚本的docker容器中运行cronjob。 昨天我一直在网上搜索和堆栈溢出,但是我找不到真正可行的解决方案。 我怎样才能做到这一点? 编辑: 我已经创建了一个(带注释的)github存储库,上面有一个工作的docker cron容器,该容器以给定的时间间隔调用shell脚本。 问题答案: 您可以将crontab复制到映像中,以使从该映像启动的容器运行该作业。

    • 问题内容: 我想以分离模式在docker容器中运行python cron作业。我的设置如下: 我的python脚本是test.py 我的cron文件是my-crontab 而我的Dockerfile是 这种方法潜在的问题是什么?还有其他方法,它们的优缺点是什么? 问题答案: 我在尝试使cron作业在docker容器中运行时遇到的几个问题是: Docker容器中的时间不是UTC的本地时间; dock

    • 这种方法的潜在问题是什么?是否还有其他方法,它们的利弊是什么?

    • 问题内容: 我正在研究Centos7。我有一个运行Jenkins的Docker容器。在那个Jenkins容器中,我必须构建并运行其他Docker容器。但是詹金斯不认识码头工人。我能够执行一个shell并将docker安装在容器中。但是,是否有可能让容器在主机上使用我的docker- engine?如何使用? 在Jenkins-(docker)-容器中安装Docker的最佳选择是什么? 问题答案:

    • 我已经在我的主机虚拟机上安装了docker。现在想用vi创建一个文件。 但它向我展示了一个错误: