【学习记录】在容器中使用crontab


准备 crontab 配置文件

新建一个名为crontab的配置文件,写定时任务规则:

1
* * * * * echo "Crontab is working" > /proc/1/fd/1

/proc/1/fd/1表示输出到容器主进程的标准输出,这样我们可以利用 kubectl logs 来查看到执行日志。

准备 Dockerfile

1
2
3
4
5
6
7
8
9
FROM docker.io/centos:7

RUN yum -y install crontabs && rm -rf /etc/cron.*/*

ADD crontab /etc/crontab
RUN chmod 0644 /etc/crontab
RUN crontab /etc/crontab

CMD ["crond", "-n"]
1
2
3
4
5
6
7
8
9
FROM docker.io/ubuntu:22.04

RUN apt-get update && apt-get install -y cron && rm -rf /etc/cron.*/*

ADD crontab /etc/crontab
RUN chmod 0644 /etc/crontab
RUN crontab /etc/crontab

CMD ["cron", "-f", "-l", "2"]

打包镜像

1
2
docker build -t docker.io/gintonic/crontab:latest -f Dockerfile .
# podman build -t docker.io/gintonic/crontab:latest -f Dockerfile .