2017-06-02 25 views
0

私はdockerでelasticsearchを実行しようとしています。 Docker centos7 systemctl deosが動作しない:Dバスに接続できません

  • 以下、ホスト・システムのような

    マイ機能:OSX 10.12.5

  • ドッキングウィンドウ:17.05.0-CE
  • ドッキングウィンドウの操作イメージ:centos:latest私はthis articleに従っていました

、それはsystemctl daemon-reloadでつかまった。

私はこのD-busについてCentOS official respondが見つかりましたが、docker runコマンドを実行すると、以下のメッセージが表示されます。 [!!!!!!] Failed to mount API filesystems, freezing.

どうすればこの問題を解決できますか?

FYI、ここでDockerfileは私がイメージ

FROM centos 
MAINTAINER juneyoung <[email protected]> 

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"] 

を構築するものであると私はコマンドで@Robertへ

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

+2

コンテナの内部に 'systemd'が必要なのはなぜですか?通常の方法ではありません – Robert

+1

@Robertありがとう! –

+0

あなたは大歓迎です! – Robert

答えて

1

まず、感謝を走ってきました。 そんなことは考えていませんでした。

私がしなければならないことは、私のCMDコマンドを編集するだけです。

CMD["elasticsearch"]

への変更は、しかし、ブラウザからのアクセスにはいくつかの雑用を持っています。 this elasticsearch forum postを参照してください。

+0

私はこれが答えではないと思うが、少なくとも迂回できる。それ以上の答えがないので、私はこの質問を閉じます。 –

1

通常のsystemctlコマンドを置き換える場合は、systemd対応OSのコマンドに従うことができます。それが私がcentos dockerコンテナにelasticsearchをインストールする方法です。

詳細は"docker-systemctl-replacement"を参照してください。

+0

あなたの答えと素晴らしい実装に感謝します。私はまだそれを使用していないが、よく見える。私はあなたが原因を説明する方法が好きです。ありがとう! –

関連する問題