解决Docker Swarm集群模式下部署Centos执行Systemctl报错问题:“Failed to get D-Bus Connection: Operation not permitted“

本文主要是介绍解决Docker Swarm集群模式下部署Centos执行Systemctl报错问题:“Failed to get D-Bus Connection: Operation not permitted“,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题

在Docker Swarm模式下, 出于安全考虑, 迄今的版本都不支持privileged参数把权限完全放开,单节模式下采用docker run 命令是可以支持privileged参数, 但这样无法利用Docker Swarm集群对所有docker节点进行管理以及网络的通信配置, 这样就导致通过Docker Swarm集群部署centos容器时, 出现Failed to get D-Bus Connection: Operation not permitted等权限相关问题,网上搜索了很多资料, 都不全面, 即使centos的docker hub官方说明也没做详细描述。

解决方法

1. 单节点模式:
docker run -ti --tmpfs /tmp --tmpfs /run -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 local/centos7-systemd
2. 集群模式:

docker-compose.yml配置文件:
增加参数

volumes: - /sys/fs/cgroup:/sys/fs/cgroup:ro
tmpfs:- /tmp- /run  
cap_add:- ALL

cap_add允许我们为容器分配额外的能力,以便能够执行某些需要这些能力的任务,
为ALL代表开放所有功能,
常见的cap_add参数包括:

NET_ADMIN:允许容器修改网络配置
SYS_ADMIN:允许容器执行系统管理任务
SYS_PTRACE:允许容器使用ptrace系统调用来追踪和调试其他进程
SYS_TIME:允许容器修改系统时间
SYSLOG:允许容器写入系统日志
IPC_LOCK:允许容器锁定内存页,防止其被换出内存
SYS_RESOURCE:允许容器修改系统资源限制

配置完整示例:

在这里插入图片描述
通过 docker statck deploy -c docker-compose.yml hadoop 进行部署
进入容器, 执行systemctl status sshd, 不再报错:
在这里插入图片描述

这篇关于解决Docker Swarm集群模式下部署Centos执行Systemctl报错问题:“Failed to get D-Bus Connection: Operation not permitted“的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/605381

相关文章

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群