2016-08-15 2 views
0

У меня есть несколько контейнеров, которые используют какой-то образ, часть из них не нужно, чтобы начать какое-то служение, когда он начатьМогу ли я запустить сервис env в контейнере докера?

Так что я хочу начать Dynamic некоторых услуг, избежать, чтобы изменить свой init.sh или dockerfile и восстановить мои изображения снова

Так что я получаю эту идею, могу ли я начать сервис по env, когда docker run, я пробовал, но это не работает.

Я знаю, что я могу использовать docker exec начать службу, я хочу его запустить, но когда у меня есть так много обслуживания, чтобы начать, это слишком сложно, используя этот способ

Таким образом, я могу команду написать быть переменной окружения, чтобы начать сервис, как этот docker run -e 'service rsyslog start' -ti container_id или docker run --env-file=env-file -ti container_id

и окр-файл, как этот service rsyslog start

Как динамический начать некоторые службы, void изменить мой файл докеров или добавить изображения?

ответ

1

Вся идея докера заключается в том, чтобы иметь один процесс/услугу на контейнер.

Но посмотрите на https://docs.docker.com/engine/admin/using_supervisord/, поставьте supervisord.conf в объеме и используйте docker exec ..., чтобы начать/остановить услуги.

0

Как отметил @mgansler, Docker на самом деле не предназначен для этого, по крайней мере, не оптимально. Возможно, вы захотите пересмотреть среду своего приложения, чтобы иметь какой-то интеллектуальный контроллер, который будет разворачивать контейнеры Docker по мере необходимости/на основе переменных config/env.

Вы также можете использовать несколько Докер-Compose файлы для создания контекстных среды и генерировать команду docker-compose up динамически, см: https://docs.docker.com/compose/production/

В противном случае, более VM-ориентированный подход может быть более подходящим, как Vagrant или аналогичный.

Смежные вопросы