Как упоминалось Джером,
Вам также необходимо добавить диспетчер процессов; например Монит или Супервайзер. Это потому, что Docker будет наблюдать за одним процессом. Если вам нужно несколько процессов, вам нужно добавить один на верхнем уровне, чтобы позаботиться об остальных. Другими словами, вы превращаете скудный и простой контейнер в нечто гораздо более сложное.
Мне не совсем понятно, зачем вам нужен диспетчер процессов внутри контейнера.
Так может кто-нибудь объяснить мне, каковы все преимущества наличия диспетчера процессов внутри контейнера? Разве не было бы лучше позволить systemd или upstart обрабатывать процессы вместо того, чтобы добавлять дополнительные службы в ваш контейнер?
В этом вся идея - использовать systemd (или выскочку и т. Д.) Внутри контейнера. Docker в большинстве случаев используется для запуска одной службы для каждого контейнера, поэтому для сложного сайта вам понадобится контейнер для веб-сервера и еще один для сервера базы данных. С помощью диспетчера процессов вы можете запускать оба в одном контейнере.
Какой подход лучше, зависит от мнения. Хотя из того, что я видел, запустить systemd внутри Docker по состоянию на июнь 2014 года непросто, например, есть ошибка # 3629 - "запуск systemd внутри контейнера docker arch зависает или выходит из строя". Для более подробной информации также прочтите «Запуск systemd в контейнере Docker».