为什么docker不能执行init作为lxc

Docker没有运行init。 所以服务在启动过程中不会启动。 Lxc在lxc-start期间运行init。由于Docker使用lxc,为什么它不运行init。 不运行init并依赖于supervisord进行守护进程有什么好处?

我认为running / sbin / init是lxc-start中的默认行为,它等待一个命令被运行。 docker中没有运行命令的默认命令参数。

您可以在docker中显式运行init:

docker run ubuntu /sbin/init 

就我个人而言,我喜欢这种行为 – 我更喜欢使用容器为我几个apss相关的进程,我不需要启动init。

好处就是保持容器的轻便。 您决定运行哪些进程,但不能超过此程序。 这样,docker就可以真正开启一个容器。

顺便说一句,你不依赖于supervisord,因为你可以写一个复杂的shell脚本,你把你的命令。

docker工人的一个应用是将其设置为可执行文件。 例如,您可以制作运行unit testing或集成testing的图像。 现在,你不希望每个人都运行几十个你不使用的服务,对吧?