在docker中运行 centos7的镜像时,报错
[root@2181bc14e47f /]# systemctl list-units
Failed to get D-Bus connection: No such file or directory
D-Bus 允许程序在其上注册以提供服务给其他的程序。同时他也提供客户端程序查询有哪些服务是可得的可能性。程序也可注册以等待kernel的events,比如说硬件的热插拔。它是个3层架构的进程间通信(IPC)系统,包括:
函数库libdbus,用于两个应用程序呼叫联系和交互消息。 一个基于libdbus构造的消息,总线守护进程可同时与多个应用程序相连,并能把来自一个应用程序的消息路由到0或者多个其他程序。 一系列基于特定应用程序框架的Wrapper库。 D-BUS为了两个特定情况而设计:
同一个桌面会话中两个桌面应用程序的通信,可使得桌面会话作为整体集成在一起以解决进程生命周期的相关问题。 桌面会话和操作系统的通信,这里操作系统一般而言包括内核和系统守护进程。
退出docker后
$ docker run --privileged  -ti -e "container=docker"    centos7-base  /usr/sbin/init  
privileged引入docker后,使用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限,privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
甚至允许你在docker容器中启动docker容器。-e  "container=docker" 设置的环境变量,容器内部的进程可以直接拿到。
现在可以执行systemctl命令了

[root@bd5aa199dbc9 ~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:sshd(8)
           man:sshd_config(5)

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐