Docker上的Kibana无法连接到Elasticsearch

Gun*_*h D 29 elasticsearch docker kibana kibana-4 elasticsearch-2.0

我试图创建Kibana和Elasticsearch,看起来Kibana在识别Elasticsearch时遇到了麻烦.

这是我的步骤:

1)创建网络

docker network create mynetwork --driver=bridge
Run Code Online (Sandbox Code Playgroud)

2)运行Elasticsearch容器

docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch_2_4 --network mynetwork elasticsearch:2.4
Run Code Online (Sandbox Code Playgroud)

3)运行Kibana容器

docker run -i --network mynetwork -p 5601:5601 kibana:4.6
Run Code Online (Sandbox Code Playgroud)

当我通过http:// localhost:9200 /通过我的浏览器连接到Elasticsearch时,我得到一个JSON输出.

但是当我打开http:// localhost:5601 /我得到

Unable to connect to Elasticsearch at http://elasticsearch:9200.
Run Code Online (Sandbox Code Playgroud)

替代方法,

我尝试时仍然遇到类似的错误

docker run -d -e ELASTICSEARCH_URL=http://127.0.0.1:9200 -p 5601:5601 kibana:4.6
Run Code Online (Sandbox Code Playgroud)

我得到错误的地方

Unable to connect to Elasticsearch at http://127.0.0.1:9200.
Run Code Online (Sandbox Code Playgroud)

我的博客帖子基于公认的答案:https://gunith.github.io/docker-kibana-elasticsearch/

And*_*gle 44

关于在容器内运行命令时的含义localhost127.0.0.1方法存在一些误解.因为每个容器都有自己的网络,localhost不是你真正的主机系统,而是容器本身.因此,当您运行kibana并将ELASTICSEARCH_URL变量指向localhost:9200kibana进程时,将在kibana容器内查找当前未运行的弹性搜索.

您已经介绍了启动容器时引用的一些自定义网络.在同一网络中运行的所有容器可以通过其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
Run Code Online (Sandbox Code Playgroud)

只要您不需要直接访问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
Run Code Online (Sandbox Code Playgroud)

  • 为了更加清晰,创建在回答底部的泊坞窗撰写片段一个'泊坞窗,compose.yml`文件,然后运行`码头工人,组成up`到站立堆栈. (3认同)

Car*_*rez 5

测试:

docker run -d -e ELASTICSEARCH_URL=http://yourhostip:9200 -p 5601:5601 kibana:4.6
Run Code Online (Sandbox Code Playgroud)

您可以使用您的主机ip或ifconfig中docker0标识的ip进行测试

问候