Запуск системной службы в контейнере Docker
Я запускаю контейнер Docker, где приложение должно иметь autofs
служба запущена, но по умолчанию она не запущена. Контейнер уже использует supervisord
чтобы управлять несколькими фоновыми процессами, поэтому я решил добавить сервис в список программ супервизора.
Есть ли способ сделать то, что не повторяет большую часть логики в /etc/init.d/autofs
? Что-то вроде:
[program:autofs]
service = autofs
было бы здорово, но этот синтаксис не поддерживается супервизором. Я должен звонить systemctl
, service
, или же /etc/init.d/autofs
напрямую?
1 ответ
Вам нужен сервис для запуска на хосте? В этом случае вам может понадобиться добавить различные точки монтирования, чтобы иметь возможность взаимодействовать с хостом systemd из контейнера и вручную запустить сервис с systemctl
,
Альтернатива, которую мы используем на Atomic Host (и которая может использоваться и в других системах) для управления системными службами в контейнерах, - это то, что мы называем "системные контейнеры". Мы используем systemd для запуска и управления контейнером runC. Таким образом, вы можете указать зависимость от другого сервиса непосредственно в файле конфигурации шаблона для systemd.