KibanaとElasticsearchを作成しようとしましたが、KibanaはElasticsearchの識別に問題があるようです。
私の手順は次のとおりです。
1)ネットワークを作成する
docker network create mynetwork --driver=bridge
2)Elasticsearch Containerの実行
docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch_2_4 --network mynetwork elasticsearch:2.4
3)Kibana Containerを実行する
docker run -i --network mynetwork -p 5601:5601 kibana:4.6
ブラウザで http:// localhost:9200 / を介してElasticsearchに接続すると、JSON出力を取得します。
しかし、 http:// localhost:5601 / を開くと、
Unable to connect to Elasticsearch at http://elasticsearch:9200.
代替アプローチ、
試しても同じようなエラーが出る
docker run -d -e ELASTICSEARCH_URL=http://127.0.0.1:9200 -p 5601:5601 kibana:4.6
エラーが発生する場所
Unable to connect to Elasticsearch at http://127.0.0.1:9200.
受け入れられた答えに基づく私のブログ投稿: https://gunith.github.io/docker-kibana-elasticsearch/
コンテナ内でコマンドを実行するときにlocalhost
または127.0.0.1
が何を意味するかについて誤解があります。すべてのコンテナには独自のネットワークがあるため、localhost
は実際のホストシステムではなく、コンテナ自体です。したがって、kibanaを実行してELASTICSEARCH_URL
変数をlocalhost:9200
にポイントすると、kibanaプロセスは、もちろん実行されていないkibanaコンテナー内でelasticsearchを探します。
コンテナの起動時に参照したカスタムネットワークを既に導入しました。同じネットワークで実行されているすべてのコンテナは、expose
dポートの名前を介して相互に参照できます(Dockerfilesを参照)。 elasticsearchコンテナにelasticsearch_2_4
という名前を付けたので、elasticsearchのhttpエンドポイントをhttp://elasticsearch_2_4:9200
として参照できます。
docker run -d --network mynetwork -e ELASTICSEARCH_URL=http://elasticsearch_2_4:9200 -p 5601:5601 kibana:4.6
Elasticsearchインスタンスに直接アクセスする必要がない限り、ポート9200および9300をホストにマッピングすることを省略することもできます。
すべてのコンテナを独自に起動する代わりに、docker-compose
を使用してすべてのサービスとパラメーターを管理することもお勧めします。データを保持するために、ローカルフォルダーをボリュームとしてマウントすることも検討する必要があります。これが作成ファイルである可能性があります。外部ネットワークが必要な場合は、networks
を追加します。追加しない場合、このセットアップは単にネットワークを作成します。
version: "2"
services:
elasticsearch:
image: elasticsearch:2.4
ports:
- "9200:9200"
volumes:
- ./esdata/:/usr/share/elasticsearch/data/
kibana:
image: kibana:4.6
ports:
- "5601:5601"
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200
Kibanaコンテナのネットワーク構成を変更しましたが、その後は正常に機能します。
テスト:
docker run -d -e ELASTICSEARCH_URL=http://yourhostip:9200 -p 5601:5601 kibana:4.6
ホストIPまたはifconfigのdocker0で識別されるIPでテストできます
よろしく