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

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

docker pull debian docker run -i -t debian:wheezy /bin/bash 

然后在正在运行的容器的shell提示下键入runlevel ,运行级别是unknown 。 我是否应该安装( apt-get )特定的软件包以添加对运行级别的支持。 如果是这样,哪一个,还有什么可能是错的?

Docker是一个应用程序隔离工具,而不是一个操作系统虚拟化工具。 运行级别在操作系统级别,操作系统出现,挂载目录,并启动服务来实现运行级别。 在一个容器中,你的应用程序被启动,结束。 您可以假定容器处于单个用户运行级别,因为您是唯一访问该环境的用户,但是安装应用程序确实无关紧要。

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

runlevel unknown在一些运行systemd系统上很常见。 尽管你的问题是用Debian标记的,Debian Jessie(最新的Debian版本,使用systemd,使用兼容性脚本来打印运行级别)。 基于Arch的发行版,以及不稳定的基于RedHat的发行版(例如Fedora)在执行runlevel时不能打印,即,他们甚至不关心打印假运行级别。

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

 $ ls -l $(which runlevel) lrwxrwxrwx 1 root root 9 Jun 18 14:44 /usr/bin/runlevel -> systemctl 

(在拱门上, runlevel在Debian的/usr/sbin中,但也指向Debian上的systemctl

runlevel脚本指向最近发行版的sysemtd控制。

一般来说, runlevel在最近的发行版本上没有任何意义(因为几乎所有人都转向使用systemd )。 如果你查看/etc/rc.d/rc*.d/目录,它们几乎是空的。

实际定义系统引导的init进程的方式是系统缺省目标,位于:

 /lib/systemd/system/default.target 

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