2016-10-31 136 views
10

我試圖創建Kibana和Elasticsearch,看起來Kibana在識別Elasticsearch時遇到了問題。Docker上的Kibana無法連接到Elasticsearch

這裏是我的步驟:

1)創建網絡

docker network create mynetwork --driver=bridge 

2)運行Elasticsearch集裝箱

docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch_2_4 --network mynetwork elasticsearch:2.4 

3)運行Kibana集裝箱

docker run -i --network mynetwork -p 5601:5601 kibana:4.6 

我得到一個JSON輸出t當我通過我的瀏覽器通過http://localhost:9200/連接到Elasticsearch時。

但是當我打開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/

+0

你有某種原因,你的arent使用泊塢窗組成? – VladoDemcak

+0

感謝您的評論@VladoDemcak ..我用安德烈亞斯建議,也適用:) –

回答

16

關於什麼localhost或有一些誤解意味着在容器內運行命令時。因爲每個容器都有自己的網絡,所以localhost不是您的真正主機系統,而是容器本身。所以當你運行kibana並將ELASTICSEARCH_URL變量指向localhost:9200時,kibana進程將在kibana容器內尋找彈性搜索,當然這裏面沒有運行那裏的彈性搜索。

您已經引入了一些在啓動容器時引用的自定義網絡。在同一網絡中運行的所有容器可以通過其端口上的名稱相互引用(請參閱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 
+0

爲了更加清晰,創建一個'docker-compose.yml 'docker-compose up'將代碼複製到堆棧中。 – scald

1

測試:

docker run -d -e ELASTICSEARCH_URL=http://yourhostip:9200 -p 5601:5601 kibana:4.6 

您可以與您的主機IP或docker0在使用ifconfig

問候

識別的IP測試
+0

感謝您的答覆卡洛斯,接受的答案的工作原理是@Andreas的建議.. 因此,解決辦法是: '' ' docker run -d --network mynetwork -e ELASTICSEARCH_URL = http:// elasticsearch_2_4:9200 -p 5601:5601 --name kibana_4_6 kibana:4.6 ''' –

0

我改變網絡配置Kibana容器並在此之後,它工作正常:

Kitematic Kibana Settings[1]

相關問題