У меня есть простой файл Docker, как показано ниже.
FROM ubuntu:latest
ADD crontab /etc/cron.d/test-cron
RUN chmod a+x /etc/cron.d/test-cron
RUN touch /var/log/cron.log
CMD cron && tail -f /var/log/cron.log
а содержимое файла crontab
так же просто, как
* * * * * root echo "Hello world" >> /var/log/cron.log 2>&1
# empty line
Когда я запускаю это на своей локальной машине OS X (с запуском док-машины), он отлично работает ( "Hello world" печатается в журнал каждый раз). Однако, когда я пытаюсь запустить его на машине Ubuntu, задание cron не запускается (пустой файл журнала).
Здесь команда, которую я использую для запуска контейнера
docker build -t crontest .
docker run --name cron crontest
Я не знаю, почему это так. Интересно, что что-то не так с ящиком Ubuntu, который у меня есть (неправильная установка времени?). Я попытался перезапустить эту машину бездействия. В настоящее время у меня есть другие контейнеры докеров, запущенные в поле Ubuntu, и они работают нормально.
Любое предложение о том, что я могу сделать, чтобы отлаживать/исправлять это, было бы чрезвычайно оценено.
EDIT:
После входа в контейнер (docker exec -it cron /bin/bash
) я могу проверить, работает ли cron:
[email protected]:/# ps -ef | grep cron
root 1 0 0 20:15 ? 00:00:00 /bin/sh -c cron && tail -f /var/log/cron.log
root 6 1 0 20:15 ? 00:00:00 cron
root 7 1 0 20:15 ? 00:00:00 tail -f /var/log/cron.log
root 25 11 0 20:21 ? 00:00:00 grep --color=auto cron