这是设计使然。Docker应该在容器的前台运行一个进程,它将在容器的pid名称空间中作为PID
1生成。Docker设计用于进程隔离,而不是用于OS虚拟化,因此容器中没有运行其他OS进程和守护程序(例如systemd,cron,syslog等),只有您运行的入口点或命令。
如果它们包含systemd命令,则您会发现很多东西都无法使用,因为您的入口点将其替换为init。Systemd还利用了docker限制容器内部的cgroups,因为更改cgroups的能力可以使进程逃避容器的隔离。如果没有在容器内以systemd的init身份运行,则没有守护进程来处理启动和停止命令。



