docker 开启root,启动容器的systemctl管理方法

在docker中运行 centos7的镜像时,报错
[root@91a57b714028 /]# 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后

[root@xdg ~]#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@xdg ~]#docker run –privileged -it centos7.6:sshd /usr/sbin/init

就不需要添加 变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值