Docker上的Kibana无法连接到Elasticsearch

发布于 2021-02-01 13:10:26

我尝试创建Kibana和Elasticsearch,看来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

通过浏览器通过http:// localhost:9200
/
连接到Elasticsearch时,我得到JSON输出。

但是,当我打开HTTP://本地主机: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.

关注者
0
被浏览
991
1 个回答
  • 面试哥
    面试哥 2021-02-01
    为面试而生,有面试问题,就找面试哥。

    关于在容器内运行命令时的含义localhost127.0.0.1含义存在一些误解。因为每个容器都有自己的网络,localhost所以不是您的真正主机系统,而是容器本身。因此,当您运行kibana并将ELASTICSEARCH_URL变量指向localhost:9200kibana进程时,它会在kibana容器中寻找当然不是在其中运行的elasticsearch。

    您已经引入了一些在启动容器时引用的自定义网络。在同一网络中运行的所有容器都可以通过其exposed端口上的名称相互引用(请参阅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
    


推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看