Назад | Перейти на главную страницу

cron и crontab отсутствуют в образе докера ubuntu 16.04

Это мой 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 плюс ваше приложение), но это часто является признаком анти-шаблона.