2016-10-31 13 views
10

से कनेक्ट नहीं हो सकता है, मैंने किबाना और लोचदार खोज बनाने की कोशिश की और ऐसा लगता है कि किबाना को एलैस्टिकसेर्च की पहचान करने में परेशानी हो रही है।डॉकर पर किबाना एलैस्टिकसेर्च

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 outpu टी जब मैं अपने ब्राउज़र के माध्यम से 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

आप कुछ कारण है कि आप डोकर रचना उपयोग न कर रहे है? – VladoDemcak

+0

टिप्पणी @VladoDemcak के लिए धन्यवाद .. मैं एंड्रियास के सुझाव का इस्तेमाल किया और वह भी काम करता है :) –

उत्तर

16

localhost याके बारे में कुछ गलतफहमी हैका मतलब है कि एक कंटेनर के अंदर एक कमांड चलाते समय। चूंकि प्रत्येक कंटेनर का अपना नेटवर्किंग होता है, localhost आपकी वास्तविक मेजबान प्रणाली नहीं है बल्कि कंटेनर स्वयं भी है। तो जब आप किबाना चला रहे हैं और ELASTICSEARCH_URL वैरिएबल को localhost:9200 पर इंगित करते हैं तो किबाना प्रक्रिया किबाना कंटेनर के अंदर लोचदार खोज की तलाश करेगी, जो निश्चित रूप से वहां नहीं चल रही है।

आपने पहले से ही कुछ कस्टम नेटवर्क पेश किए हैं जिन्हें आपने कंटेनर शुरू करते समय संदर्भित किया था। एक ही नेटवर्क में चल रहे सभी कंटेनर एक दूसरे को उनके expose डी बंदरगाहों पर देख सकते हैं (डॉकरफाइल देखें)। जैसा कि आपने अपना लोचदार खोज कंटेनर elasticsearch_2_4 नाम दिया है, आप elasticsearch के http endpoint को 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 बनाएं 'डॉकर के साथ फ़ाइल को उत्तर के नीचे स्निपेट लिखें, फिर स्टैक को खड़े करने के लिए' डॉकर-कंपोज़ अप 'चलाएं। – scald

1

टेस्ट:

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

आप अपने मेजबान आईपी या आईपी ifconfig

सादर

में docker0 से पहचान के साथ परीक्षण कर सकते हैं
+0

प्रतिक्रिया कार्लोस, स्वीकार किए जाते हैं जवाब काम करता है के रूप में @Andreas ने सुझाव दिया करने के लिए धन्यवाद .. तो समाधान है: '' ' डॉकर रन-डी -नेटवर्क mynetwork -e ELASTICSEARCH_URL = http: // elasticsearch_2_4: 9200 -p 5601: 5601 --name kibana_4_6 किबाना: 4.6 ' ' –

0

मैं Kibana कंटेनर के लिए नेटवर्क विन्यास बदल गया है और इस के बाद यह ठीक काम करता है:

Kitematic Kibana Settings[1]

संबंधित मुद्दे