将 kibana 与 elasticsearch 连接起来

linking kibana with elasticsearch

我的盒子上有以下 docker 个容器 运行...

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                              NAMES
5da7523e527b        kibana              "/docker-entrypoint.s"   About a minute ago   Up About a minute   0.0.0.0:5601->5601/tcp             elated_lovelace
20aea0e545ca        elasticsearch       "/docker-entrypoint.s"   3 hours ago          Up 3 hours          0.0.0.0:9200->9200/tcp, 9300/tcp   sad_meitner

我的目标是让 kibana link 进入我的 elasticsearch 容器,但是当我点击 kibana 时,它告诉我我没有任何文档存储。我知道这是不对的,因为我在 elasticsearch 中肯定有文档。我猜我的 link 命令是错误的。

这是我用来启动 kibana 容器的 docker 命令。

docker run -p 5601:5601 --link sad_meitner:elasticsearch -d kibana 

谁能告诉我我做错了什么?

谢谢

首先,链接是一项遗留功能,请先创建一个用户定义的网络:

docker network create mynetwork --driver=bridge

现在将 mynetwork 用于您希望能够相互通信的容器。

docker run -p 5601:5601 --name kibana -d --network mynetwork kibana 
docker run -p 9200:9200 -p 9300:9300 --name elasticsearch -d --network mynetwork elasticsearch

Docker 将为您的用户定义网络 运行 一个 dns server,因此您可以通过名称 ping 其他容器。

docker exec -it kibana /bin/bash
ping elasticsearch

您可以使用 telnetcurl 从 kibana 容器验证 kibana->elasticsearch 连接。

p.s 我最近使用 official (library) docker ELK 图像和用户定义的网络,效果非常好。

您可以在构建 kibana 之前将 ENV ELASTICSEARCH_URL=elasticsearch:9200 添加到您的 Dockerfile,然后使用 docker-compose 到 运行 elasticsearch with kibana,如下所示:

version: '2'
services:
  elasticsearch:
   image: docker.elastic.co/elasticsearch/elasticsearch:5.3.0
   container_name: elasticsearch
   ports:
    - "9200:9200"
    - "9300:9300"
  environment:
    ES_JAVA_OPTS: "-Xmx256m -Xms256m"
 kibana:
  image: docker.elastic.co/kibana/kibana:5.3.0
  container_name: kibana
  ports:
    - "5601:5601"
  depends_on:
   - elasticsearch