求助,centos7镜像创建的容器里面安装服务后,无法使用命令启动服务

# systemctl start sshd Failed to get D-Bus connection: Operation not permitted 求助,centos7镜像创建的容器里面安装服务后,无法使用命令启动服务
已邀请:

adolphlwq - https://blog.adolphlwq.xyz

赞同来自: styshoo silenceshell

首先恭喜你遇到了`centos:7`镜像的<strong>大坑</strong>! 你的问题在(http://stackoverflow.com/questions/28495341/start-a-service-in-docker-container-failed-with-error-failed-to-get-d-bus-conne) >Currently, systemd in CentOS 7 has been removed and replaced with a fakesystemd package for dependency resolution. This is due to systemd requiring the CAP_SYS_ADMIN capability, as well as being able to read the host's cgroups. If you wish to replace the fakesystemd package and use systemd normally, please follow the steps below. 上文是(https://github.com/docker-library/docs/tree/master/centos#systemd-integration),大意是说`原来的systemd会需要CAP_SYS_ADMIN`,我们不想这样,就换成了<strong>fakesystemd</strong>,所以你会遇到上面奇葩的问题.当然官方repo也给出了(https://github.com/docker-library/docs/tree/master/centos#dockerfile-for-systemd-base-image)不过比较复杂. 你可以使用`/usr/sbin/sshd &`来启动ssh服务.或者换成`centos6`系列的镜像.总之centos7镜像太坑. 这个问题我也遇到了.您可以参考下(https://github.com/sequenceiq/hadoop-docker/blob/2.7.1/Dockerfile),这个是在centos6.5构建的镜像. PS:这个问题困扰了我将近2天在弄明白.真是浪费时间.希望能帮助到您.

Persi

赞同来自: molifighting

<div class="aw-upload-img-list active"> <a href="http://dockone.io/uploads/answer/20170221/82e87f8418ecba414854138058e09e7c.png" target="_blank" data-fancybox-group="thumb" rel="lightbox"><img src="http://dockone.io/uploads/answer/20170221/82e87f8418ecba414854138058e09e7c.png" class="img-polaroid" title="centos7systemctlbug.png" alt="centos7systemctlbug.png" /></a> </div> centos7.2的镜像同样也有这个问题

bnuhero - 读书喝茶踢球写程序

赞同来自: CullenX

升级到最新的 CentOS 7.2 镜像能解决这个问题:(http://seven.centos.org/2015/12/fixing-centos-7-systemd-conflicts-with-docker/)

yingz - 80后it男。。。

将近两年前的问题了。 我最近也遇到这个问题。其实在docker hub的centos镜像的说明页面上有一节“Systemd integration”,已经介绍了如何在标准镜像的基础上启用systemd支持。按它给的Dockerfile再构建一个镜像即可,假设tag为centos:systemd。 启动的命令需要挂载cgroup的fs,并用init来做entrypoint。 <pre> docker run -d -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name centos centos:systemd /usr/sbin/init </pre> 如果需要执行其它命令,可以执行exec进入容器 <pre> docker exec -ti centos bash </pre>

要回复问题请先登录注册