制作带crontab定时任务的docker镜像

  • 文档概述

      有些业务场景要在docker镜像中运行定时任务,此手册基于base镜像制作带crontab定时任务的docker镜像。

  • 操作前准备工作

  1. 需要base镜像
  2. 需要安装crontabs软件包, 环境要有yum源
  • 操作步骤

  • 1. 新建Dockerfile文件

       # mkdir  -p  /root/crontest; cd /root/crontest

       # vim Dockfile

#导入base镜像
FROM cr.kylinos.cn/v10sp3-2403/kylin-server-v10-sp3-2403-general-alpha20-x86_64-init:202405

#安装cron需要yum源,准备kylin_x86_64.repo文件,并将其拷贝到容器内/etc/yum.repos.d/,赋予644权限
ADD kylin_x86_64.repo  /etc/yum.repos.d/kylin_x86_64.repo
RUN chmod 0644 /etc/yum.repos.d/kylin_x86_64.repo

#安装crontab相关软件包
RUN yum install -y cronie crontabs

#将crontab定时任务文件拷贝到/etc/cron.d/目录
ADD crontab-file /etc/cron.d/user-cron

#拷贝业务脚本到容器内
ADD date.sh  /home

#配置好权限,并起用定时任务
RUN chmod 0644 /etc/cron.d/user-cron && crontab /etc/cron.d/user-cron
RUN chmod +x /home/date.sh

#新建业务脚本的日志文件
RUN touch /var/log/date.log

#设置entrypoint,方便容器内通过systemd管理crond服务
ENTRYPOINT ["/sbin/init"]
  1.     2. 新建业务脚本

        # cat /root/crontest/date.sh

#/bin/bash

echo "The time is:$(date)"
     3. 新建crontab文件

        # cat /root/crontest/

       示例脚本,每隔1分钟打印一次date时间,记录到/var/log/date.log日志。

*/1 * * * * /usr/bin/sh  /home/date.sh 2>&1 >> /var/log/date.log
     4. 提供yum源文件

     # cat /root/crontest/kylin_x86_64.repo

###Kylin Linux Advanced Server 10 - os repo###

[ks10-adv-os]

name = Kylin Linux Advanced Server 10 - Os

baseurl = https://update.cs2c.com.cn/NS/V10/V10SP3/os/adv/lic/base/$basearch/

gpgcheck = 0

enabled = 1



[ks10-adv-updates]

name = Kylin Linux Advanced Server 10 - Updates

baseurl = https://update.cs2c.com.cn/NS/V10/V10SP3/os/adv/lic/updates/$basearch/

gpgcheck = 0

enabled = 1

    注意:由于容器内缺少gpgkey校验文件,此处gpgcheck=0一定要为0.

    5. 构建镜像
# docker build -t crontest  .

    

     6. 运行容器
# docker images |grep crontest

# docker run -itd --privileged=true --name crontest crontest:latest bash

# docker exec -it crontest bash

  

 7. 运行cron定时任务
# crontab -l

# systemctl enable --now crond

# systemctl status crond

# tail -f /var/log/date.log

   

  至此,运行crontab定时任务的docker镜像制作完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值