据我了解,Docker 容器没有初始化系统,它们只运行 Dockerfile 的 CMD 部分中指定的任何内容。
然而,(例如在 FROM ubuntu:16.04
中)当我做 /usr/sbin/service --status-all
我得到一个服务列表,就像在一个真正的 Ubuntu 系统中一样。
这些服务在做什么?这只是一个剩菜,他们实际上什么也没做?
最佳答案
Upstart/service 只是在/etc/init.d 中查找,它由软件包安装程序填充。 Docker 没有修改这些。您可以使用 service
手动生成进程命令,但没有运行 init,操作系统不会产生所有典型进程。一旦你产生了一个进程,你仍然需要保持你的 pid 1 运行以避免容器退出。容器的典型设计是只运行一个应用程序,它需要在前台运行,绕过 Upstart/service 和 init。
关于ubuntu -/usr/sbin/service 在 Docker 容器下做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38382388/