Docker centos7 systemctl deos无效:无法连接D-bus

时间:2017-06-02 00:46:32

标签: elasticsearch docker dbus systemctl

我正在尝试在docker上运行elasticsearch。

我的功能如下

  • 主机系统:OSX 10.12.5
  • docker:17.05.0-ce
  • docker operating image:centos:latest

我关注的是this article,但却停留在systemctl daemon-reload

我找到了关于此D-bus错误的CentOS official respond,但是当我运行docker run命令时,它会显示以下消息。 [!!!!!!] Failed to mount API filesystems, freezing.

我怎么能解决这个问题?

仅供参考,这是我构建图像的Dockerfile

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

2 个答案:

答案 0 :(得分:1)

首先,感谢@Robert。 我不这么认为。

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

将其更改为 CMD["elasticsearch"]

但是,必须要从浏览器访问一些杂务。 参考this elasticsearch forum post

答案 1 :(得分:1)

如果要替换正常的systemctl命令,则可以按照启用systemd的操作系统的命令进行操作。这就是我如何在centos docker容器中安装elasticsearch。

有关详细信息,请参阅"docker-systemctl-replacement"