Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >安装服务启动报错Failed to get D-Bus connection: Operation not permitted

安装服务启动报错Failed to get D-Bus connection: Operation not permitted

原创
作者头像
张琳兮
修改于 2021-02-25 02:13:05
修改于 2021-02-25 02:13:05
13.9K01
代码可运行
举报
文章被收录于专栏:首富手记首富手记
运行总次数:1
代码可运行

安装服务启动报错Failed to get D-Bus connection: Operation not permitted

代码语言:txt
AI代码解释
复制
作者:张首富
w x:y18163201
时间:2021-02-24

今天别人给我了一个 linux 主机的远程登录方式,让我上去帮他安装个 docker。这么简单的事情不是手到擒来吗。于是开始搞

代码语言:txt
AI代码解释
复制
1,查看下系统版本
# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
2, 查看下磁盘分区情况
# df -Th
Filesystem                                                                                            Type   Size  Used Avail Use% Mounted on
/dev/mapper/docker-253:2-12888033817-9f12171102a5151e4f0a6b77bb496f6446352e34b3b1ca35888b4eeb81ebd916 xfs     10G  1.1G  9.0G  11% /
tmpfs                                                                                                 tmpfs   64M     0   64M   0% /dev
tmpfs                                                                                                 tmpfs   63G     0   63G   0% /sys/fs/cgroup
/dev/mapper/centos-home                                                                               xfs    3.6T  355G  3.3T  10% /home
/dev/mapper/centos-root                                                                               xfs     50G   36G   15G  71% /etc/yum.repos.d
shm                                                                                                   tmpfs   64M     0   64M   0% /dev/shm

准备工作完成,于是开始安装

代码语言:txt
AI代码解释
复制
# 在线安装 docker 使用的是 docker 最新版本 19.03
  curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  # 创建配置文件
  mkdir -p /home/dockerd
  mkdir -p /etc/docker/
cat >> /etc/docker/daemon.json <<-'EOF'
{
  "graph": "/home/dockerd",
  "data-root": "/home/dockerd",
  "storage-driver": "overlay2",
  "exec-opts": ["native.cgroupdriver=systemd"],
  "live-restore": true,
  "hosts": ["tcp://0.0.0.0:2376", "unix:///var/run/docker.sock"],
  "log-driver":"json-file",
  "log-opts":{ "max-size" :"100m","max-file":"10"}
}
EOF

然后当我准备给他说安装好了的时候,启动报错了

代码语言:txt
AI代码解释
复制
# systemctl start docker
Failed to get D-Bus connection: Operation not permitted

然后就懵逼了。赶紧 google

通过查阅资料:

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

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

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

发现都是在 docker 里面才会出现这个问题,是因为不是特权模式,看到这我就有点明白了,这个人怕是给我一个 docker 容器让我给他安装 docker 吧。

自己找机器实验

代码语言:txt
AI代码解释
复制
# docker exec -it -p 8888:22 --name test --rm centos:centos7.6.1810 bash
# yum -y install openssh-server
# ssh-keygen -A
# /usr/sbin/sshd
# passwd

然后在开个窗口去连接 8888 端口,安装服务启动的时候果不其然的报错和上图一样。我就推测他给我的是一个docker 启动的 centos

但是想在容器中使用systemctl来管理包难道就没办法了吗?那肯定不是,我们只需要使用特权模式启动即可--privileged=true,经过确定他给我的确实是一个在 docker 里面的系统。

疑问:

回头观察他给我的系统文件系统格式如下

代码语言:txt
AI代码解释
复制
# df -Th
Filesystem                                                                                            Type   Size  Used Avail Use% Mounted on
/dev/mapper/docker-253:2...6 xfs     10G  1.1G  9.0G  11% /
tmpfs                                                                                                 tmpfs   64M     0   64M   0% /dev
tmpfs                                                                                                 tmpfs   63G     0   63G   0% /sys/fs/cgroup
/dev/mapper/centos-home                                                                               xfs    3.6T  355G  3.3T  10% /home
/dev/mapper/centos-root                                                                               xfs     50G   36G   15G  71% /etc/yum.repos.d
shm                                                                                                   tmpfs   64M     0   64M   0% /dev/shm

但是我们启动的 docker 文件系统格式如下:

代码语言:txt
AI代码解释
复制
# df -Th
Filesystem     Type     Size  Used Avail Use% Mounted on
overlay        overlay 1008G  143G  815G  15% /
tmpfs          tmpfs     64M     0   64M   0% /dev
tmpfs          tmpfs    3.9G     0  3.9G   0% /sys/fs/cgroup
shm            tmpfs     64M     0   64M   0% /dev/shm
/dev/sdb       ext4    1008G  143G  815G  15% /etc/hosts
tmpfs          tmpfs    3.9G     0  3.9G   0% /proc/acpi
tmpfs          tmpfs    3.9G     0  3.9G   0% /proc/scsi
tmpfs          tmpfs    3.9G     0  3.9G   0% /sys/firmware

会发现文件的跟系统格式不一样。他的格式为 xfs,但我们的却是overlay,不知道他是如何实现的。

现在还在询问中,要是有知道的大佬提示给我说下谢谢

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
golang源码分析:etcd(14)
接者看下storage目录的外层几个文件server/storage/backend.go,它其实仅仅对文件server/storage/backend/backend.go里面的接口的一个包装,真正的接口定义和具体实现都在内层。同时又加入了hook。
golangLeetcode
2023/09/20
2160
golang源码分析:etcd(14)
etcd-wal模块解析一
传统数据库的日志,例如 redo log(重做日志),记录的是修改后的数据。其实就是 MySQL 里经常说到的 WAL 技术,它的关键点就是先写日志,再写磁盘。
没有故事的陈师傅
2021/07/21
1.2K1
Raft协议实现etcd
Etcd中跟存储部分相关的模块主要有3块,Raft状态机中存储的日志条目、持久化到文件的日志条目以及后端的KV存储。
ruochen
2021/11/22
1.4K0
一文读懂Wal的作用和实现(Etcd和Tidwall)
Write Ahead Logging,简称WAL,也被翻译成预写式日志,是数据库技术中实现事务日志的一种标准方法,可以实现单机事务的原子性,同时可以提高数据库的写入效率。
KunkkaWu
2022/08/03
4K0
golang源码分析:etcd(12)
etcd后端存储用的是bolt,在分析完server如何初始化raftNode流程后,我们看下后端存储bolt-db的初始化流程。
golangLeetcode
2023/09/20
2610
golang源码分析:etcd(12)
golang源码分析:etcd(11)
我们继续在文件 server/etcdserver/server.go 中分析EtcdServer的初始化流程,它会先调用bootstrap函数初始化后端存储bolt-db然后初始化raftNode,最后初始化transport,调用start开始raft协议的网络传输。具体实现如下
golangLeetcode
2023/09/09
2300
golang源码分析:etcd(11)
Etcd数据恢复机制
使用过存储软件的都知道,为了应对写入性能和灾难恢复,各个存储软件都有相关的机制来保障, 比如:
tunsuy
2023/08/19
5080
Etcd数据恢复机制
golang源码分析:raft(12)
下面我们来到更底一层,分别分析下pipeline和stream的实现,pipeline通过固定数量的goroutine 来分发处理消息:
golangLeetcode
2023/09/07
2220
golang源码分析:raft(12)
golang源码分析:etcd(19)
etcd的增删改都会增加全局版本号,删除也是软删除,虽然便于回溯修改历史,但是随之带来问题,数据量的膨胀。因此需要进行压缩,也就是compact。假如我们制定压缩版本是v6,那么v6之前的所有已经删除的key会被删除,没有被删除的key保留最新的版本,丢弃之前的修改历史。
golangLeetcode
2023/09/20
3500
golang源码分析:etcd(19)
etcd raft 处理流程图系列3-wal的读写
本文仅介绍wal的基本处理,如create、open、close、read等操作,从wal目录中加载snapshot,wal文件的创建,以及读取wal目录中的所有数据(主要是entryType、stateType、metadataType这几类)和接收到node.Ready()之后的写操作。
charlieroro
2021/08/13
6780
etcd raft 处理流程图系列3-wal的读写
tidwall之raft-wal源码分析
在分析tidwall/raft-wal的源码前,我们先介绍一下tidwall/wal模块,raft-wal内部是采用tidwall/wal来实现的一套持久化方案
jaydenwen123
2021/07/19
5290
tidwall之raft-wal源码分析
golang源码分析:go-mysql(4)binlog增量同步
实现binlog增量同步(Incremental dumping)需要哪些步骤呢?获取配置,初始化同步器,找到上一次同步位置,开启同步,并处理解析到的事件,整体流程如下:
golangLeetcode
2023/09/06
1.1K0
golang源码分析:go-mysql(4)binlog增量同步
golang源码分析:raft(11)
前面提到transport将远程对象分为两类:remote和peer,分别代表新建立的连接和已经加入集群的节点,下面简单分析下它们的核心逻辑:
golangLeetcode
2023/09/07
2540
golang源码分析:raft(11)
golang源码分析:etcd(18)
介绍完一个个函数实现后,我们分析下完整的etcd的读写流程。有没有觉得很奇怪既然bolt是采用b+树存储的持久化存储来存储kv,为什还需要一个Btree结构来存储key的信息?
golangLeetcode
2023/09/20
2050
golang源码分析:etcd(18)
golang源码分析:uber/cadence(2)
下面我能看下cadence的helloword例子的源码,它包含两个文件,第一个文件是启动程序,第二个定义了workflow和activity
golangLeetcode
2023/08/09
3270
golang源码分析:uber/cadence(2)
手把手,带你从零封装Gin框架(三):日志初始化
本篇来讲一下怎么将日志服务集成到项目中,它也是框架中必不可少的,平时代码调试,线上 Bug 分析都离不开它。这里将使用 zap 作为日志库,一般来说,日志都是需要写入到文件保存的,这也是 zap 唯一缺少的部分,所以我将结合 lumberjack 来使用,实现日志切割归档的功能
用户10002156
2024/01/10
1.3K1
手把手,带你从零封装Gin框架(三):日志初始化
golang源码分析:etcd(16)
server/storage/backend/backend.go定义了后端存储的核心接口和具体实现,本质上是对boltdb的相关接口的一个封装
golangLeetcode
2023/09/20
2250
golang源码分析:etcd(16)
研究Fabric中Etcd的Raft应用
Fabric的共识服务设计成了可插拔的模块,以此满足了根据不同应用场景切换不同共识选项的需求。在Hyperledger Fabric最新版本中,Fabric系统的共识模块中实现了三种共识算法,其中包括Solo,Kafka以及Raft算法。官方推荐的是使用Raft共识算法,但是为了更好地理解Fabric中的共识模块,我们也简单介绍一下Solo和Kafka这两种共识算法。
KunkkaWu
2022/08/03
1K1
tidwall/wal库源码分析
本文是前段时间做一个技术建设项目过程中,技术调研的一个持久化wal的实现库,此库可谓短小精悍,尤其内部数据的组织结构尤为值得一学,下文将重点对其核心功能进行源码分析
jaydenwen123
2021/07/19
7600
tidwall/wal库源码分析
golang源码分析:etcd(5)
在分析完etcd的client如何使用后,我们看下etcd的client源码,etcd是通过rpc和server通信的,其中关于kv相关操作位于etcd/api的api/v3@v3.5.6/etcdserverpb/rpc.pb.go
golangLeetcode
2023/08/09
4490
相关推荐
golang源码分析:etcd(14)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验