博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker任务调度工具: ofelia
阅读量:6574 次
发布时间:2019-06-24

本文共 1914 字,大约阅读时间需要 6 分钟。

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

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

如它文档所说,这是专门为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 = @hourlycontainer = my-containercommand = touch /tmp/example复制代码

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

  • job-run : 指定一个镜像,用其创建一个新的容器,然后运行相应指令
[job-run "job-executed-on-new-container"]schedule = @hourlyimage = ubuntu:latestcommand = touch /tmp/example复制代码

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

  • job-local:在宿主机上运行
[job-local "job-executed-on-current-host"]schedule = @hourlycommand = touch /tmp/example复制代码
  • job-service-run:在swarm种运行
[job-service-run "service-executed-on-new-container"]schedule = 0,20,40 * * * *image = ubuntunetwork = swarm_networkcommand =  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 5mcontainer = yanbao_factory_yanbao_1command = python get_latest_report.pysave-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到宿主机上。

转载地址:http://ulgjo.baihongyu.com/

你可能感兴趣的文章
jquery中的事件与动画
查看>>
XPO学习(3)----数据查询
查看>>
java.util报错
查看>>
C++学习笔记03
查看>>
Object.preventExtensions()使用技巧
查看>>
magento url rewrite规则
查看>>
potala(5)——Unit Test and Cache
查看>>
计算几何-Andrew法-凸包
查看>>
在java中String类为什么要设计成final
查看>>
前端框架——Jquery——基础篇7__工具函数(Utils)
查看>>
日常学习随笔-数组、单链表、双链表三种形式实现队列结构的基本操作(源码注释)...
查看>>
select 中添加option的注意
查看>>
Codeforces #369 div2 D.Directed Roads
查看>>
vijos1153猫狗大战
查看>>
炮(棋盘DP)
查看>>
改造二叉树 (长乐一中模拟赛day2T1)
查看>>
Cloud Foundry 在 Azure 中国正式发布
查看>>
transform 二维转变
查看>>
v-on指令
查看>>
[存档]xx-09210xxx-2010-ACM-ICPC竞赛总结
查看>>