docker任务调度工具: ofelia

提到定时任务,第一个想到的肯定是cron。如何在docker中使用cron,请参考这个so上的问题:stackoverflow.com/questions/3…

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

如它文档所说,这是专门为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语法,例如:

@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、付费专栏及课程。

余额充值