Docker 没有运行 init。因此服务不会在启动期间启动。Lxc 在 lxc-start 期间运行 init。既然 Docker 使用 lxc,为什么它不运行 init。不运行 init 并依赖 Supervisord 进行守护进程有什么好处?
答案1
Docker 是一个应用程序容器,更专注于将应用程序作为容器分发。在此应用程序中运行里面容器是唯一运行的,即它们的 init 进程。如果您的进程需要更多应用程序(mysql、mongodb 数据库等),您不会在由一个 init 守护进程管理的 docker 容器内启动这些应用程序,而是启动更多 docker 容器,每个容器都在 docker 容器内。
你可以试试http://phusion.github.io/baseimage-docker/它提供了一个简单的 init 守护进程来在你的 docker 镜像中运行更多进程(这个是基于 Ubuntu 的),或者你可以尝试 LXDhttp://www.ubuntu.com/cloud/lxd对于容器技术来说,它更像是系统容器。