一、如何在容器中启用cron
这里咱们列出集中用于定时的计划:
- 应用主机的cron实现定时工作
- 创立一个新容器专门执行定时工作
- 在原有容器上装置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