当我像这样运行一个基本的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
,如果存在的话。