Docker centos7 systemctl deos不工作:连接D-bus失败

我正试图在docker上运行elasticsearch。

我的function如下

  • 主机系统:OSX 10.12.5
  • docker工人:17.05.0-ce
  • docker操作图像: centos:latest

我正在关注这篇文章 ,但它坚持systemctl daemon-reload

我发现CentOS 官方回应了这个D-bus错误,但是当我运行docker run命令时,它显示了下面的消息。 [!!!!!!] Failed to mount API filesystems, freezing.

我怎么能解决这个问题?

仅供参考,这里是Dockerfile我build立的形象

 FROM centos MAINTAINER juneyoung <juneyoung@hanmail.net> ARG u=elastic ARG uid=1000 ARG g=elastic ARG gid=1000 ARG p=elastic # add USER RUN groupadd -g ${gid} ${g} RUN useradd -d /home/${u} -u ${uid} -g ${g} -s /bin/bash ${u} # systemctl settings from official Centos github # https://github.com/docker-library/docs/tree/master/centos#systemd-integration ENV container docker RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \ systemd-tmpfiles-setup.service ] || rm -f $i; done); \ rm -f /lib/systemd/system/multi-user.target.wants/*;\ rm -f /etc/systemd/system/*.wants/*;\ rm -f /lib/systemd/system/local-fs.target.wants/*; \ rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ rm -f /lib/systemd/system/basic.target.wants/*;\ rm -f /lib/systemd/system/anaconda.target.wants/*; VOLUME [ "/sys/fs/cgroup" ] # yum settings RUN yum -y update RUN yum -y install java-1.8.0-openjdk.x86_64 ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-3.b12.el7_3.x86_64/jre/ # install wget RUN yum install -y wget # install net-tools : netstat, ifconfig RUN yum install -y net-tools # Elasticsearch install ENV ELASTIC_VERSION=5.4.0 RUN rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch RUN wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${ELASTIC_VERSION}.rpm RUN rpm -ivh elasticsearch-${ELASTIC_VERSION}.rpm CMD ["/usr/sbin/init"] 

我已经跑命令

docker run -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name=elastic2 elastic2

首先,感谢@罗伯特。 我不这样想。

我所要做的只是编辑我的CMD命令。

将其更改为CMD["elasticsearch"]

但是,不得不从浏览器访问一些杂项。 参考这个elasticsearch论坛post 。

如果要replace正常的systemctl命令,则可以按照systemd-enabled操作系统的命令进行操作。 这就是我在Centos Docker容器中安装elasticsearch的方法。

有关详细信息,请参阅“docker-systemctl-replacement” 。