Debian / Ubuntu Docker Swarm 中的 Cron 作业摘要

Debian / Ubuntu Docker Swarm 中的 Cron 作业摘要

我想知道如何在 docker swarm 中配置单独的 cron 作业容器,以便在单独的进程/容器中执行 cron 作业。我想总结一下我从几篇文章中收集到的一些知识,直到我在 docker swarm 中完成所有 cron 工作。请在评论中添加改进,或者如果可以的话直接编辑它们。

这是使用 docker 17.04 和用于 cron 作业的 debian:jessie 容器进行测试的。

答案1

建造

Dockerfile对于 cron 作业容器,安装 cron,在容器启动时启动 cron 服务,然后使用 tail 命令保持容器运行

RUN apt-get update && apt-get install -qq -yes cron
CMD service cron start && tail -f /dev/null

作品

docker-compose.yml

services:
  cron:
    image: debian:jessie
    volumes:
      - mycronjobs:/etc/cron.d

工作文件

在项目根路径中有一个包含 cron 作业的文件夹(仅在文件名中使用下划线表示特殊字符)

me@machine:/projectdir$ ls -al
-rw-rw-r--  1 me me  978 Apr 26 17:49 docker-compose.yml
-rw-rw-r--  1 me me 1052 Apr 26 18:06 Dockerfile
drwxrwxr-x  6 me me 4096 Apr 26 16:57 mycronjobs

me@machine:/projectdir$ ls -al mycronjobs
-rw-rw-r--  1 me me  978 Apr 26 17:49 job-dash-bad
-rw-rw-r--  1 me me 1052 Apr 26 18:06 job_underscore_good
-rw-rw-r--  1 me me 1052 Apr 26 18:06 check_running

工作定义

你可以有 cron 作业

  • /var/spool/cron/crontabs/mycrontab这是通过 cli 工具创建的$ 定时任务/ 又名用户 crontab

  • /etc/crontabs这是系统范围内的 crontab 集合

    • '* * * * *' root /bin/touch /projectdir/system_crontab_works # 不带 's
  • /etc/cron.daily这是包含每天运行的普通 bash 脚本的文件夹
  • /etc/cron.d这是一个包含系统范围的 cron 作业的文件夹,其文件类似于/etc/crontabs。文件不得包含破折号,只能包含下划线
    • 须藤 vi /etc/cron.d/system_cron
    • '* * * * *' root /bin/touch /projectdir/system_cron.d_works # 不带 's
    • sudo chown root:root /etc/cron.d/system_cron

相关内容