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

阅读: 评论:0

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

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

问题

在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. 集群模式:
增加参数

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 -l hadoop 进行部署
进入容器, 执行systemctl status sshd, 不再报错:

本文发布于:2024-01-29 05:21:18,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170647688112987.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:报错   集群   模式下   Docker   Swarm
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23