一、如何在容器中启用cron

这里咱们列出集中用于定时的计划:

  1. 应用主机的cron实现定时工作
  2. 创立一个新容器专门执行定时工作
  3. 在原有容器上装置cron,外面运行2个过程

上面我将具体介绍形式1的应用过程,对于形式二和形式3请参考:Docker cron定时工作

二、应用宿主机的cron实现docker容器内的定时工作

1.宿主机装置crontab

# vixie-cron软件包是cron的主程序yum install vixie-cron# crontabs软件包是用来装置、卸装、或列举用来驱动 cron 守护过程的表格的程序yum install crontabs# 留神# 如果在执行“yum install vixie-cron”中,遇到“No package vixie-cron available. Error: Nothing to do”,解决形式如下:yum -y install vim-enhanced.x86_64

2.crond常用命令

service crond start //启动服务 service crond stop //敞开服务 service crond restart //重启服务 service crond reload //从新载入配置service crond status //查看状态chkconfig crond on //设置开机主动启动crond服务:chkconfig –list crond //开机级别的crond服务运行状况 ,2、3、4、5级别开机会主动启动crond服务 chkconfig crond off//勾销开机主动启动crond服务

crontab常用命令

crontab -e 而后增加相应的工作,wq存盘退出。crontab -e配置是针对某个用户的,而编辑/etc/crontab是针对零碎的工作crontab -l //列出以后的所有调度工作 crontab -l -u jp //列出用户jp的所有调度工作crontab -r //删除所有任务调度工作

3.执行指定docker容器内的命令或脚本

#1.创立定时执行脚本 test.shDOCKER_ID=be7d32f830fdsudo docker exec -it $DOCKER_ID /bin/bash -c './config/test.sh'# 2.退出定时工作(每分钟执行一次)crontab -e*/1 * * * * /root/docker-compose/curators/test.sh  >> /root/docker-compose/curators/test.log

留神:1.执行中波及的脚本及日志文件都须要赋权
2.如果定时工作没有执行胜利,则查看定时工作输入日志

#定时工作输入日志门路 cat /etc/crontab# 该文件内前4行变量别离是:SHELL:变量的值指定零碎应用的SHELL环境(该样例为bash shell),PATH:变量定义了执行命令的门路。MAILTO: Cron的输入以电子邮件的模式发给MAILTO变量定义的用户名。如果MAILTO变量定义为空字符串(MAILTO=""),电子邮件不会被发送。HOME: 执行命令或脚本时HOME变量可用来设置基目录

3.如果碰到谬误“the input device is not a TTY”,解决形式如下

# sudo docker exec -it $DOCKER_ID /bin/bash -c './config/test.sh' 去掉‘t’sudo docker exec -i $DOCKER_ID /bin/bash -c './config/test.sh'

参考文献

crontab装置及操作
docker 在容器外执行某个容器内的某个命令
linux装置crontab报错:No package vixie-cron available. Error: Nothing to do
Docker容器应用问题:Failed to get D-Bus connection: Operation not permitted
报错:the input device is not a TTY