Docker 没有运行 init。所以服务在启动时不会启动。lxc 在 lxc-start 期间运行 init。由于 Docker 使用 lxc 为什么它没有运行 init。不运行 init 并依赖 supervisord 进行守护程序有什么好处?
问问题
1283 次
2 回答
0
优点很简单,就是让您的容器保持轻便。您决定运行哪些进程,仅此而已。这样,docker 可以非常快速地启动一个容器。
顺便说一句,您不依赖于 supervisord,例如您可以编写一个复杂的 shell 脚本,然后将其放入您的命令中。
docker 的应用之一是将其设置为可执行文件。例如,您可以制作运行单元或集成测试的图像。现在,您不会希望它们中的每一个都运行几十个您不使用的服务,对吧?
于 2013-12-20T15:30:33.630 回答
0
我认为运行 /sbin/init 只是 lxc-start 中的默认行为,它等待运行命令。docker 中的运行命令没有默认的命令参数。
您可以在 docker 中显式运行 init:
docker run ubuntu /sbin/init
就个人而言,我喜欢这种行为——我更喜欢将容器用于我的几个与 apss 相关的进程,并且不需要启动 init。
于 2013-12-19T15:04:46.113 回答