这是我的Dockerfile
FROM ubuntu:16.04 RUN apt-get update -y && apt-get install -y \ git \ python \ python-pip
在创buildDocker镜像后,我login并尝试设置一个cron作业进行testing。 令我惊讶的是, cron
和crontab
不存在。
# ls app bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var # crontab -l /bin/sh: 6: crontab: not found # crontab -l /bin/sh: 7: crontab: not found # crontab -l /bin/sh: 10: crontab: not found # cron /bin/sh: 11: cron: not found
但是我希望cron
能够出现在Ubuntu的映像中。 我选了一个错误的图像还是有什么我需要做启用cron
?
在图像ubuntu:16.04中默认不安装cron命令
需要运行apt-get install cron
Docker镜像在devise上是最小的,它们被用来创build容器,而不是一个完整的操作系统。 一个容器正在隔离一个应用程序的运行,所以默认情况下它不会有所有其他的OS守护进程在cron,syslog,mail等环境中运行。
你可以安装cron:
RUN apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install \ cron \ && apt-get clean \ && rm -rf /var/lib/apt/lists/*
在你的Dockerfile里面。 但是,要运行crontab条目,还需要启动cron守护程序作为容器启动过程的一部分。 像forego和supervisord这样的工具可以用来在你的容器(cron和你的应用程序)中运行多个进程,但是这样做往往是反模式的标志。