文档章节

Failed to get D-Bus connection: Operation not permitted , docker安装centos7之坑

雪饼
 雪饼
发布于 2017/06/04 22:58
字数 604
阅读 400
收藏 1

当使用docker安装centos:7镜像或centos:latest后,如果执行systemctl时,会出现以下问题

[root@68903c5fbdeb /]# systemctl stop firewalld.service
Failed to get D-Bus connection: Operation not permitted

这是docker中centos7的bug,官网上也提到了这个问题,Docker的官方CentOS镜像中没有提供systemd服务,并给出了 解决办法,虽然复杂了一点,还是可以处理的。

1、创建systemd的base image

新建一个文件 Dockerfile,这是构建docker镜像时默认读取的文件名称,也可以使用其它文件名,然后在构建时使用 -f 指定文件名即可

vi Dockerfile

输入以下内容

FROM centos:latest
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]

执行创建镜像命令(注意:记得命令最后要加个空格和点,否则会报错)

docker build --rm -t centos:c7-systemd .

2、基于该镜像创建http服务的镜像

重新编辑Dockerfile文件

vi Dockerfile

删除原来的内容,输入以下内容

FROM centos:c7-systemd
RUN yum -y install httpd; yum clean all; systemctl enable httpd.service
EXPOSE 80
CMD ["/usr/sbin/init"]

构建docker镜像(注意:记得命令最后要加个空格和点,否则会报错)

docker build --rm -t centos:c7-systemd-httpd .

3、使用新的镜像来创建centos7容器

记得要加上 --privileged,官方给的示例没有这个参数,执行时会报错,加上之后就不会了

docker run --privileged -it --name mycentos -d -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 centos:c7-systemd-httpd

4、进入docker容器执行systemctl

docker exec -it mycentos bin/bash

执行

systemctl start sshd.service

虽然现在没有提示 Failed to get D-Bus connection: Operation not permitted 问题,但却提示

[root@21481fb2cefc /]# systemctl start sshd.service
Failed to get D-Bus connection: No such file or directory

而查了systemctl的服务路径

ls /usr/lib/systemd/system | grep sshd.service

是存在 sshd.service 服务的,但执行systemctl却说是找不到文件,很奇怪

执行 systemctl enable sshd.service 也不行

[root@21481fb2cefc /]# systemctl enable sshd.service
Failed to get D-Bus connection: No such file or directory

这个问题还暂时找不到解决办法,后面继续研究

 

欢迎关注本人的微信公众号“大数据与人工智能Lab”(BigdataAILab),获取更多资讯

© 著作权归作者所有

共有 人打赏支持
雪饼

雪饼

粉丝 173
博文 48
码字总数 94669
作品 0
广州
Docker 报错 Failed to get D-Bus connection

Docker容器使用问题:Failed to get D-Bus connection: Operation not permitted 在CentOS7 中,docker容器中yum 安装完mysql后,启动mysqld报错 # systemctl start mysqld Failed to get D......

枫叶云
05/08
0
0
centos7 docker Failed to get D-Bus connection

systemctl start mysqld.service Failed to get D-Bus connection: Operation not permitted systemctl list-units |grep mysql Failed to get D-Bus connection: Operation not permitted 启......

xiaoxin
07/16
0
0
使用ssh连接docker容器

原文地址:http://blog.csdn.net/qq34021712/article/details/73379851 前言: 使用ssh连接docker容器,需要给docker容器先分配好ip之后才可以开启ssh服务,才能使用ssh连接 参考文章:给docke...

haoxiaoyong1014
04/19
0
0
CentOS7(1708)制作docker镜像之后,开启sshd服务失败的处理办法

最近我把公司产品迁移到了CentOS1708环境下,于是就开始制作对应的docker镜像(虽然我一直“错误”的把docker当成虚机用,用着方便就好) 制作镜像完成之后,创建的容器需要自启动sshd服务,...

fylx
2017/12/31
0
0
Docker容器使用问题:Failed to get D-Bus connection: Operation not permitted

刚开始接触Docker的朋友,可能会遇到这么一个问题,使用centos7镜像创建容器后,在里面使用systemctl启动服务报错。针对这个报错,我们接下来就分析下! # docker run -itd --name centos7 c...

李振良OK
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

laravel 微信支付

1.composer加载laravel微信支付第三方文件 composer require "overtrue/laravel-wechat:~4.0" composer require simplesoftwareio/simple-qrcode 1.3.* //composer生成二维码文件 2.改confi......

vio小黑
11分钟前
0
0
学习设计模式——抽象工厂模式

1. 认识抽象工厂模式 1. 定义:提供一个创建一系列相关或互相依赖的对象的接口,而无需指定它们具体的类。 2. 组成结构: AbstractFactory:抽象工厂类,定义创建一系列对象的操作接口 Fact...

江左煤郎
11分钟前
0
0
ES6的let块级作用域和变量不可提升导致一个比较容易出现的错误

今天在写NodeJS代码的时候出现一个变量一直提示未定义,简化后的代码如下: let param = 1;{ console.log(param);} 就在想,不至于啊。不是继承上层的声明吗? 继续看下去,发现原来...

MKjy
17分钟前
0
0
50:nginx访问日记|日记切割|静态文件不记录日记和过期时间

1、nginx访问日记: 日记格式:在主配置文件nginx.conf里搜索log_format; [root@localhost_001 conf]# vim nginx.conflog_format combined_realip '$remote_addr $http_x_forwarded_for ......

芬野de博客
21分钟前
0
0
前后端正常交互的流程

1、评审阶段:产品召集前后端进行需求评审,前后端各自捋清楚自己的业务量以及联调之间工作量,从而进行开发时间评估。 2、开发准备阶段:前后端一起商量需求中需要联调的部分,进行接口的口...

Jack088
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部