Docker не запускает init. Поэтому службы не запускаются во время запуска. Lxc запускает init во время lxc-start. Поскольку Docker использует lxc, почему он не запускает init? Каковы преимущества отсутствия запуска init и зависимости от supervisord для демонизации?
решение1
Докер — этоконтейнер приложений, больше ориентирован на распространение приложений как контейнеров. В этом приложении/процессе, работающемвнутриконтейнер единственный, который запущен, их процесс init. Если вашему процессу нужно больше приложений (mysql, база данных mongodb и т. д.), вы не запускаете их внутри вашего контейнера docker, управляемого одним демоном init, вы запускаете больше контейнеров docker, каждый внутри контейнера docker.
Можешь попробоватьhttp://phusion.github.io/baseimage-docker/который предоставляет простой демон инициализации для запуска большего количества процессов внутри вашего образа Docker (этот основан на Ubuntu) или вы можете попробовать LXDhttp://www.ubuntu.com/cloud/lxdдля контейнерной технологии, используемой скорее каксистемный контейнер.
решение2
Этот вопрос был поднят какпроблемана GitHub, и объединенный запрос на извлечение позволяет init
запустить его с версии 0.6.x):
docker run $IMAGE /sbin/init
Первоначальная причина, по которой init не был запущен (недействительна, поскольку0.6.x):
При запуске нового контейнера docker mint привязывает себя к /sbin/init внутри контейнера, скрывая настоящий /sbin/init и в процессе делая его недоступным для выполнения.
Этот ответможет предложить больше помощи, иРуководство по Dockerможет пригодиться.