2016-10-31 2 views
10

Kibana 및 Elasticsearch를 만들려고했는데 Kibana가 Elasticsearch를 식별하는 데 문제가있는 것으로 보입니다.Docker의 Kibana가 Elasticsearch에 연결할 수 없습니다.

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

내가 할

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

3) 실행 키바 컨테이너

docker network create mynetwork --driver=bridge 

2) 실행 Elasticsearch 컨테이너

1) 만들기 네트워크 : 여기

내 단계입니다 JSON 출력 브라우저를 통해 http://localhost:9200/을 통해 Elasticsearch에 연결할 때 t.

내가 http://localhost:5601/을 열 때 나는 내가 오류가

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://elasticsearch:9200. 

다른 방법은,

나는 여전히 비슷한 오류가 얻을

Unable to connect to Elasticsearch at http://127.0.0.1:9200. 

허용 답변에 따라 내 블로그 게시물 : https://gunith.github.io/docker-kibana-elasticsearch/

+0

당신은 당신이 구성 고정 표시기를 사용하여이 arent 왜 어떤 이유가 있습니까? 주석 @VladoDemcak에 대한 – VladoDemcak

+0

덕분에 .. 나는 안드레아스의 제안을 사용하고도 작동합니다 :) –

답변

16

무엇에 관한 오해가 있습니까? localhost 또는 127.0.0.1은 컨테이너 내부에서 명령을 실행할 때를 의미합니다. 모든 컨테이너에는 자체 네트워킹이 있기 때문에 localhost은 실제 호스트 시스템이 아니라 컨테이너 자체입니다. 따라서 키바나를 실행하고 localhost:9200으로 변수 ELASTICSEARCH_URL을 가리키면 kibana 프로세스가 kibana 컨테이너 안의 elasticsearch를 찾게됩니다.

컨테이너를 시작할 때 참조한 사용자 지정 네트워크가 이미 도입되었습니다. 동일한 네트워크에서 실행중인 모든 컨테이너는 expose 개의 포트 (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와 함께 작성하여 답장의 맨 아래에 snippet을 작성한 다음'docker-compose up'을 실행하여 스택을 세우십시오. – scald

1

테스트 :

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

당신은 호스트의 IP 또는 ifconfig를

감사

에 docker0에 의해 식별되는 IP를 테스트 할 수 있습니다
+0

@Andreas에 의해 제안 카를로스, 허용 대답 작동 응답을 주셔서 감사합니다 .. 그래서 해결책은 다음과 같습니다 ''를 ' docker run -d --network mynetwork -e ELASTICSEARCH_URL = http : // elasticsearch_2_4 : 9200 -p 5601 : 5601 - 이름 kibana_4_6 키바나 : 4.6 ''' –

0

나는 키바 컨테이너에 대한 네트워크 구성을 변경하고,이 후 그것을 잘 작동합니다 :

Kitematic Kibana Settings[1]

관련 문제