4

When I run a basic Docker container (from within Google Cloud Shell) like so

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

and then type runlevel at the running container's shell prompt, the run level is unknown. Am I supposed to install (apt-get) particular packages in order to add support for run levels. If so, which ones, or what else could be wrong?

4

2 回答 2

5

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

于 2016-07-17T22:14:57.480 回答
4

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

runlevel unknown在某些运行的系统上很常见systemd。您的问题被标记为 Debian,而 Debian Jessie(最新的 Debian 版本,使用 systemd,使用兼容性脚本来打印运行级别)。基于 Arch 的发行版和不稳定的基于 RedHat 的发行版(例如 Fedora)unknown在执行时打印runlevel,即它们甚至不关心打印虚假的运行级别。

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

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

(即在 arch 上,runlevel/usr/sbinDebian 上,但它也指向systemctl在 Debian 上)

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

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

实际定义init系统引导的过程是 systemd 默认目标,位于此处:

/lib/systemd/system/default.target

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

于 2016-07-18T01:08:40.430 回答