2016-10-31 169 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]

相关问题