docker任务调度工具: ofelia

提到定时任务,第一个想到的肯定是cron。如何在docker中使用cron,请参考这个so上的问题:https://stackoverflow.com/questions/37458287/how-to-run-a-cron-job-inside-a-docker-container

今天要介绍的是另一个专门为docker环境设计的任务管理工具:ofelia。github地址:https://github.com/mcuadros/ofelia。

如它文档所说,这是专门为docker环境设计的,目标是在docker环境中取代cron。ofelia最主要的feature是能够直接在docker镜像内部运行命令。ofelia直接使用docker api,能够模拟docker exec,可以在一个运行中的docker镜像内运行指定命令。

运行定时任务

Ofelia一共支持4种类型的任务:

  • job-exec : 在一个处于running状态的容器运行job

[job-exec "job-executed-on-running-container"]	
schedule = @hourly	
container = my-container	
command = touch /tmp/example

在处于running状态的my-container容器中,每隔一个小时运行一次 touch/tmp/example命令。

  • job-run : 指定一个镜像,用其创建一个新的容器,然后运行相应指令

[job-run "job-executed-on-new-container"]	
schedule = @hourly	
image = ubuntu:latest	
command = touch /tmp/example

使用 ubuntu:latest镜像构建运行的容器。

  • job-local:在宿主机上运行

[job-local "job-executed-on-current-host"]	
schedule = @hourly	
command = touch /tmp/example
  • job-service-run:在swarm种运行

[job-service-run "service-executed-on-new-container"]	
schedule = 0,20,40 * * * *	
image = ubuntu	
network = swarm_network	
command =  touch /tmp/example

同时,ofelia支持丰富的schedule语法,例如:640?wx_fmt=jpeg

@every,比如:

  • @every 10m : 每10分钟运行一次

  • @every 1h20m15s 每1小时20分15s运行一次

详细请参见https://godoc.org/github.com/robfig/cron 以及cron官方文档。

日志

Ofelai内置了三种日志处理方式:

  • mail:发送邮件

  • save:保存至文件

  • slack:通过slack webhook发送

支持的配置选项有:

  1. 针对邮件方式:

  • smtp-host

  • smtp-port

  • smtp-user

  • smtp-password

  • email-to

  • email-from

  • mail-only-on-error

  1. 针对日志文件保存方式

  • save-folder

  • save-only-on-error

  1. 针对slack webhook:

  • slack-webhook

  • slack-only-on-error

示例

在宿主机上添加 /etc/ofelia/config.ini 文件:

[job-exec "test"]	
schedule = @every 5m	
container = yanbao_factory_yanbao_1	
command = python get_latest_report.py	
save-folder = /var/log/yanbao

然后docker run:

*docker run -it -v /etc/ofelia:/etc/ofelia -v /var/run/docker.sock:/var/run/docker.sock -v /path/to/yanbao/logs:/var/log/yanbao --name ofelia  mcuadros/ofelia:latest*
  • -v /etc/ofelia:/etc/ofelia

ofelia容器默认的配置文件为/etc/ofelia/config.ini,所以需要将上面建的这个文件mount到容器内部

  • -v /path/to/yanbao/logs:/var/log/yanbao

在配置中文件指定了 save-folder=/var/log/yanbao所以将这个目录mount到宿主机上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值