0%

Docker中使用定时任务

前言

《Linux设置定时任务》一文中学习了crontab的使用方法,但是同样的配置方法,在Docker中是不会生效的。因为Docker中默认只会启动一个进程,crond并不会启动。本文研究一下在Docker中配置定时任务的方法,踩踩坑。

启动crond

要想在容器中使用定时任务,有三个办法:

  • 把crond作为一号进程启动。
  • supervisor作为一号进程启动,使用supervisor启动crond。
  • 进入容器手动启动crond。

本文使用第一个方法启动crond,启动命令为:

1
docker run --name vkcrond -d -it voidking/crond:v1.0 "/bin/bash" "-c" "/usr/sbin/crond > start.log && tail -f start.log"

crond日志

1、查看crond日志
tail /var/log/cron
报错没有这个文件,这是因为没有打开rsyslog。

2、打开rsyslog

1
2
3
4
5
6
# centos
/etc/init.d/rsyslog start
# centos7
systemctl restart rsyslog.service
# centos6
service rsyslog restart

再次查看,crond日志文件就存在了。

使用crond

crond启动后,其他的配置参考《Linux设置定时任务》即可。