cron не работает в контейнере docker без каких-либо возможностей

#linux #docker #kubernetes #cron

#линукс #докер #кубернетес #крон

Вопрос:

У меня есть контейнер docker, в котором я выполняю следующее задание cron:

 SHELL=/bin/bash BASH_ENV=/container.env */1 * * * * find ${CLONE_DIR} -mmin  10 -exec rm -fr {} gt;gt; /var/log/cronjob.log 2gt;amp;1 ;  

Cronjob отлично работает в моей локальной среде (т. е. использует docker-compose для запуска контейнера).

В моей производственной среде я использую k8s и удаляю все возможности из контейнера:

 securityContext:  capabilities:  drop:  - ALL  

Что приводит к тому, что задание вообще не выполняется.

Контрольный список:

  • Я проверил, что cron служба запущена.
  • Никаких ошибок в cron сценарии.
  • crontab -l перечисляет задание

Я протестировал контейнер с и без capabilities и могу убедиться, что с ним он работает, а без него-нет. Поэтому я думаю, что в этом и заключается проблема.

Какую возможность я должен добавить в свой контейнер, чтобы это работало? Спасибо за вашу помощь и внимание.

Комментарии:

1. какова ваша точка входа/cmd для контейнера docker, который поддерживает работу контейнера? CRON — это фоновая задача, и контейнеру требуется выполнение задачи переднего плана, чтобы контейнер оставался живым.

2. У меня есть скрипт bash, запускающий мой сервер, и CMD выглядит так: запуск службы CMD amp;amp; /подождите amp;amp; /server/start.sh

Ответ №1:

Недостающая возможность была: CAP_SETGID