@hancack

Как выполнить systemctl daemon-reload внутри Docker контейнера?

Всем привет! Недавно я столкнулся с проблемой во время настройки кастомного сервиса (демона) внутри Docker контейнера, и на данный момент мне так и не удалось найти решения.

Итак, ситуация следующая: У меня имеется файл custom.service, в котором прописаны все настройки сервиса (к слову, на хосте сервис работает без проблем). Этот файл я перемещаю в папку /etc/systemd/system/, где хранятся файлы других сервисов. После перемещения этого файла в директорию, нужно выполнить команду systemctl daemon-reload, однако тут появляется проблема - отсутствие systemctl в докере, и, следовательно, отсутствие возможность выполнить daemon-reload, которая обновляет список доступных сервисов в системе, как я понял. Для запуска демона мне нехватает лишь добавления кастомного сервиса в систему.

Я уверен, что кто-то уже сталкивался с такой же проблемой, однако найти решение мне не удалось. Если вы знаете как это исправить, может есть какие-то альтернативы этой команде, то подскажите пожалуйста, буду очень благодарен. Спасибо!
  • Вопрос задан
  • 629 просмотров
Пригласить эксперта
Ответы на вопрос 3
Viji
@Viji
DevOps Engineer
решение так себе, но что-то можно вытащиит отсюда...

https://forums.docker.com/t/systemctl-status-is-no...
Ответ написан
Комментировать
vesper-bot
@vesper-bot
Любитель файрволлов
По-моему, у вас XY-проблема. Вам хочется запустить некий сервис в докере, но вместо поиска вариантов запустить его докером вы хватаетесь за systemctl. Соберите для сервиса отдельный контейнер и запускайте.
Ответ написан
@Barm0leykin
Вообще идеология докера это один процесс - один контейнер. То есть по феншую нужен второй контейнер для вашего демона или как вариант научить ваши приложения получать команды по api и обрабатывать новые вводные без перезагрузки.

Но если сильно хочется сделать внутри докера виртуалку с сервисами, кроном, инит-скриптами и прочими радостями, то есть вот такая штука: https://github.com/phusion/baseimage-docker. Там используется не systemd, а runit, но смысл тот же самый
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы