Docker没有运行init。 所以服务在启动过程中不会启动。 Lxc在lxc-start期间运行init。由于Docker使用lxc,为什么它不运行init。 不运行init并依赖于supervisord进行守护进程有什么好处?
Docker是一个应用程序容器 ,更专注于将应用程序分配为容器。 在这个容器内运行的应用程序/进程是唯一一个正在运行的init进程。 如果你的进程需要更多的应用程序(mysql,mongodb数据库等),你不会在你的Docker容器内部启动这些容器,而是由一个init守护进程pipe理,那么你需要启动更多的docker容器。
您可以尝试http://phusion.github.io/baseimage-docker/ ,它提供了一个简单的init守护程序,在您的Docker镜像(这个是基于Ubuntu的)中运行更多的进程,或者您可以尝试LXD http://www.ubuntu .com / cloud / lxd用于容器技术更像一个系统容器 。
这个问题已经在GitHub上提出,并且合并了一个pull请求,允许init从0.6.x开始运行):
docker run $IMAGE /sbin/init
资源
init没有运行的原始原因(从0.6.x开始无效 ):
当启动一个新的容器时,docker mint在容器中将自己绑定为/ sbin / init,隐藏真正的/ sbin / init,并且在进程中使其无法执行。
这个答案可能会提供更多的帮助, Docker指导手册可能会派上用场。