Ubuntu 基本Docker容器报告运行级别未知

Ubuntu 基本Docker容器报告运行级别未知,ubuntu,docker,debian,runlevel,google-cloud-shell,Ubuntu,Docker,Debian,Runlevel,Google Cloud Shell,当我运行一个基本的Docker容器(从Google Cloud Shell中)时 然后在运行容器的shell提示符下键入runlevel,运行级别为unknown。我是否应该安装(apt get)特定的软件包,以增加对运行级别的支持。如果是这样的话,哪些是错误的,或者还有什么是错误的?Docker是一种应用程序隔离工具,而不是操作系统虚拟化工具。运行级别在操作系统级别,操作系统启动、装载目录并启动服务以实现运行级别。在容器中,您的应用程序将启动,即结束。您可以假设容器处于单用户运行级别,因为您是

当我运行一个基本的Docker容器(从Google Cloud Shell中)时


然后在运行容器的shell提示符下键入
runlevel
,运行级别为
unknown
。我是否应该安装(
apt get
)特定的软件包,以增加对运行级别的支持。如果是这样的话,哪些是错误的,或者还有什么是错误的?

Docker是一种应用程序隔离工具,而不是操作系统虚拟化工具。运行级别在操作系统级别,操作系统启动、装载目录并启动服务以实现运行级别。在容器中,您的应用程序将启动,即结束。您可以假设容器处于单用户运行级别,因为您是唯一访问该环境的用户,但安装应用程序并不重要。

BMitch是正确的。Docker与运行级别无关,它永远不会更改运行级别。但还有更多

运行级别
未知
在一些运行
systemd
的系统上很常见。您的问题被标记为Debian和Debian Jessie(最新的Debian发行版,使用systemd,使用兼容性脚本打印运行级别)。基于Arch的发行版和不稳定的基于RedHat的发行版(如Fedora)在执行
运行级别时打印
未知
,即他们甚至不想打印假运行级别

如果检查运行级脚本,您将在最近的发行版上获得以下输出:

$ ls -l $(which runlevel)
lrwxrwxrwx 1 root root 9 Jun 18 14:44 /usr/bin/runlevel -> systemctl
(即在arch上,
运行级别
位于Debian上的
/usr/sbin
中,但它也指向Debian上的
systemctl

runlevel
脚本指向最新发行版上的
sysemtd
控件

一般来说,
runlevel
在最近的发行版上没有任何意义(因为几乎每个人都切换到了
systemd
)。如果查看
/etc/rc.d/rc*.d/
目录,它们几乎是空的

真正定义
init
如何处理系统引导的是systemd默认目标,位于此处:

/lib/systemd/system/default.target

或者
/etc/systemd/system/default.target
,如果存在的话。

我明白了,看起来我犯了与问题相同的新手错误。您是否可以指出一篇文章,进一步解释应用程序隔离工具和操作系统虚拟化工具之间的区别,这样我就可以系统地了解与VM映像相对的容器中还有哪些不同之处?关于虚拟机映像的问题由来已久,但可能仍然有用。
/lib/systemd/system/default.target