博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker容器使用问题:Failed to get D-Bus connection: Operation not permitted
阅读量:6875 次
发布时间:2019-06-26

本文共 831 字,大约阅读时间需要 2 分钟。

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

# docker run -itd --name centos7 centos:7

# docker attach centos7

# yum install vsftpd

# systemctl start vsftpd

Failed to get D-Bus connection: Operation not permitted

不能启动服务,什么情况?

难道容器不能运行服务嘛!!!

答:

Docker的设计理念是在容器里面不运行后台服务,容器本身就是宿主机上的一个独立的主进程,也可以间接的理解为就是容器里运行服务的应用进程。一个容器的生命周期是围绕这个主进程存在的,所以正确的使用容器方法是将里面的服务运行在前台。

再说到systemd,这个套件已经成为主流Linux发行版(比如CentOS7、Ubuntu14+)默认的服务管理,取代了传统的SystemV风格服务管理。systemd维护系统服务程序,它需要特权去会访问Linux内核。而容器并不是一个完整的操作系统,只有一个文件系统,而且默认启动只是普通用户这样的权限访问Linux内核,也就是没有特权,所以自然就用不了!

因此,请遵守容器设计原则,一个容器里运行一个前台服务!

我就想这样运行,难道解决不了吗?

答:可以,以特权模式运行容器。

创建容器:

# docker run -d -name centos7 --privileged=true centos:7 /usr/sbin/init

进入容器:

# docker exec -it centos7 /bin/bash

这样可以使用systemctl启动服务了。

希望能帮到您!如果问题,可以加技术群一起交流、学习!

 Docker技术交流群:(516039855)

转载地址:http://hzrfl.baihongyu.com/

你可能感兴趣的文章
Docker容器使用问题:Failed to get D-Bus connection: Operation not permitted
查看>>
【转载】岁月倾尽,黯然诉说一纸神伤
查看>>
虚拟化系列-VMware vSphere 5.1 VDP备份管理
查看>>
Java笔记2:Eclipse编写第一个Java程序
查看>>
【足迹C++primer】表达式求值
查看>>
javascript小白学习指南0---1
查看>>
C#实现接口xml序列化与反序列化
查看>>
[译]Godot系列教程一 - 场景与节点
查看>>
BUG级别定义标准
查看>>
Java常考面试题(经典)
查看>>
认清世界,认清自我,超凡脱俗
查看>>
如何在Fedora 22上面配置Apache的Docker容器
查看>>
Swift 控制流
查看>>
【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】
查看>>
C语言接口与实现实例
查看>>
含有汉字的固定字符由ZHS16GBK数据库导入到AL32UTF8的数据库
查看>>
php-fpm进程数优化
查看>>
iOS中如何对具有复杂依赖的SDK在真机上进行单元测试
查看>>
Mobile Web中URL设计问题
查看>>
core Animation之CAAnimationGroup(动画群组)
查看>>