制作带crontab定时任务的docker镜像
·
-
文档概述
有些业务场景要在容器中运行定时任务,此手册基于麒麟基础镜像制作带crontab定时任务的docker镜像。
-
操作前准备工作
- 需要基础镜像
- 需要安装crontabs软件包, 环境要有yum源
-
操作步骤
-
1. 新建Dockerfile文件
# mkdir -p /root/crontest; cd /root/crontest
# cat Dockfile
#导入base镜像
FROM cr.kylinos.cn/kylin/kylin-server-init:v10sp3-2403
#安装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"]
-
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 -d --privileged=true --name crontest crontest:latest
# docker exec -it crontest bash
# ps -aux

7. 检查定时任务输出
# crontab -l
# tail -f /var/log/date.log

至此,运行crontab定时任务的docker镜像制作完成。
更多推荐
所有评论(0)