据我所知,Docker容器没有init系统,它们只运行Dockerfile的CMD部分中指定的任何内容。
然而,(例如在FROM ubuntu:16.04
)当我/usr/sbin/service --status-all
时,我得到了一个服务列表,就像在真正的Ubuntu系统中一样。
这些服务在做什么?它只是一个遗留物,它们实际上没有做任何事情吗?
答案 0 :(得分:1)
Upstart / service只是在/etc/init.d中查找,它由软件包安装程序填充。 Docker并没有修改它们。您可以使用service
命令手动生成进程,但如果没有init运行,操作系统将不会生成所有典型进程。一旦你产生了一个进程,你仍然需要保持你的pid 1运行,以避免容器退出。容器的典型设计是仅运行单个应用程序,该应用程序需要在前台运行,绕过Upstart / service和init。