2017-01-19 6 views
1

Elasticsearchを使用する:Docker公開リポジトリから最新(v5.1)、私はCerebroを含む自分のイメージを作成しました。私はEleresearchネットワークを適切に設定して、CerebroのElasticsearchに接続できるようにしようとしています。作成したコンテナの中を走っているCerebroは、私のホストのhttp://localhost:9000に正しく描画されます。私のイメージをコミットした後Elasticsearch 5.1とDocker - ホストからElasticsearchに届くようにネットワークを正しく設定する方法

が、私は次のように私のドッカーコンテナを作成しました:〜/ elasticsearchで

sudo docker run -d -it --privileged --name es5.1 --restart=always \ 
-p 9200:9200 \ 
-p 9300:9300 \ 
-p 9000:9000 \ 
-v ~/elasticsearch/5.1/config:/usr/share/elasticsearch/config \ 
-v ~/elasticsearch/5.1/data:/usr/share/elasticsearch/data \ 
-v ~/elasticsearch/5.1/cerebro/conf:/root/cerebro-0.4.2/conf \ 
elasticsearch_cerebro:5.1 \ 
/root/cerebro-0.4.2/bin/cerebro 

私elasticsearch.yml/5.1/config現在指定された次のネットワークと発見のエントリがあります。

network.publish_host: 192.168.1.26 
discovery.zen.ping.unicast.hosts: ["192.168.1.26:9300"] 

私も0.0.0.0を試して、これらの設定のループバックにデフォルト値を指定していません。さらに、私は値の組み合わせでnetwork.hostを指定しようとしました。どんなに私はこれを設定する方法、起動時にelasticsearchログ:

[info] play.api.Play - Application started (Prod) 
[info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 
[error] p.c.s.n.PlayDefaultUpstreamHandler - Cannot invoke the action 
java.net.ConnectException: Connection refused: localhost/127.0.0.1:9200 
… cascading errors because of this connection refusal... 

は、どんなに私がelasticsearch.ymlネットワーキングを設定する方法、Elasticsearchの起動時にエラーメッセージは変化しません。私はelasticsearch.ymlがDockerコンテナの内部で取得されていることを確認しました。私はこの構成で間違っていると私に教えてください。

答えて

0

まあ、私はこれと数日間の戦いの後、私自身の質問に答えているように見える!問題は、elasticsearchがコンテナの内側で開始されていないということだった。コンテナ:

[FAIL] elasticsearch:これに

service elasticsearch status 

は、OSがで応答:コンテナに一度

docker exec -it es5.1 bash 

、私はサービスの状態を確認しました実行されていません...失敗しました!

私はそれを開始しました:私はelasticsearchと脳を開始するためにドッキングウィンドウの実行から呼ぶことにしますし、それはトリックを行う必要があり、単一のスクリプトを追加

service elasticsearch start 

。しかし、これを設定するより良い方法があるかどうか聞いてみたいと思います。

+0

あなたは間違いなくDockerコンテナでサービスが動作しないようにしたいと思います。あなたは本当に唯一のプロセスとしてforegraoundで実行されているElasticsearchプロセスを望んでいます。サービスとcronジョブはコンテナ内で実行されません。 – Zagrev

+0

ありがとうございます。私はあなたがこの問題にぶつかったと思う、私はコンテナ内のサービスとしてESを実行しようとしていると思う。 –

0

私はgithubの================のelasticsearch、kibana、logstash、脳クラスタ

https://github.com/Shuliyey/elkc

をスピンアップしますレポをドッキングウィンドウは、作曲製========================================== ======

一方、実際の問題(elasticsearch_cerebroは動作しません)に関しては、

1つのドッカーコンテナでelasticsearchとcerebroを処理するには、詳細

+0

ありがとう、Shuliyey!これはまさに私が必要としていたものです。 –

0

ですべてのスーパーバイザを使用する必要はありませんで更新され、スーパバイザ

https://docs.docker.com/engine/admin/using_supervisord/

に使用する必要があります。

ドッキングウィンドウ-compose.yml:

version: '2' 

services: 

    elasticsearch: 
    build: elasticsearch 
    volumes: 
     - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml 
     - ./elasticsearch/data:/usr/share/elasticsearch/data 
    ports: 
     - "9200:9200" 
     - "9300:9300" 
    environment: 
     ES_JAVA_OPTS: "-Xmx1500m -Xms1500m" 
    networks: 
     - elk 

    cerebro: 
    build: cerebro 
    volumes: 
     - ./cerebro/config/application.conf:/opt/cerebro/conf/application.conf 
    ports: 
     - "9000:9000" 
    networks: 
     - elk 
    depends_on: 
     - elasticsearch 

networks: 
    elk: 
    driver: bridge 

elasticsearch/Dockerfile:

FROM docker.elastic.co/elasticsearch/elasticsearch:5.5.1 
これを解決するために非常に単純な方法は、このように、ドッキングウィンドウ-コンを使用して、一緒にElasticsearchと脳をバンドルすることです

脳/ Dockerfile:

FROM yannart/cerebro 

次にあなたがdocker-compose buildおよび012を実行します。すべてが開始されたら、http://localhost:9200でESにアクセスし、http://localhost:9000でセレーブ

関連する問題