Это мой Dockerfile
FROM ubuntu:16.04
RUN apt-get update -y && apt-get install -y \
git \
python \
python-pip
После создания образа докера я вхожу в систему и пытаюсь настроить задание cron для тестирования. К моему удивлению, 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
?
Команда cron по умолчанию не установлена в образ ubuntu: 16.04
Нужно бежать apt-get install cron
Образы Docker минимальны по дизайну, и они используются для создания контейнеров, а не полноценной операционной системы. Контейнер изолирует выполнение приложения, поэтому по умолчанию в нем не будут работать все другие демоны ОС, такие как 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 плюс ваше приложение), но это часто является признаком анти-шаблона.