Skip to content
On this page

Container 中启动定时任务

0x001 场景

在Linux中定时任务一般使用cron,ubuntu的官方镜像中已经包含了cron,可以直接使用,不过 Dokcer 如果没有循环任务的话执行完毕后会直接关闭容器,下面会介绍一种方法。

0x002 文件准备

cron-docker // 项目根路径  
├── Dockerfile // Dockerfile文件  
├── sources.list // 源文件  
└── crontabfile // 定时任务文件  

0x003 编写Dockerfile文件

FROM ubuntu:latest  
MAINTAINER taroballs  
  
COPY sources.list /etc/apt/sources.list  
RUN apt-get update && apt-get -y install cron  
  
# Add crontab file in the cron directory  
ADD crontabfile /etc/cron.d/hello-cron  
  
# Give execution rights on the cron job  
RUN chmod 0644 /etc/cron.d/hello-cron  
  
# Create the log file to be able to run tail  
RUN touch /var/log/cron.log  
  
RUN crontab /etc/cron.d/hello-cron  
  
# Run the command on container startup  
CMD cron && tail -f /var/log/cron.log  

0x004 编写crontabfile文件

* * * * * echo "Hell0 w0r1d for yOu" >> /var/log/cron.log  

0x005 构建镜像

docker build -t cron-docker .  

0x006 运行容器

docker run -itd cron-docker  

0x007 进入容器

docker exec -it a53df89ec72d /bin/bash  

0x008 查看定时任务

crontab -l  

0x009 查看日志

cat /usr/log/cron.log  

Released under the MIT License.