跳到主要内容

在容器中使用 crontab

准备 crontab 配置文件

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

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

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

准备 Dockerfile

CentOS 镜像

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"]

Ubuntu 镜像

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"]

打包镜像

docker build -t docker.io/imroc/crontab:latest -f Dockerfile .
# podman build -t docker.io/imroc/crontab:latest -f Dockerfile .