连接kibana和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链接到我的elasticsearch容器,但是当我打kibana它告诉我,我没有任何文件存储。 我知道这是不正确的,因为我肯定有elasticsearch的文件。 我猜我的链接命令是错误的。

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

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

有人能告诉我我做错了什么吗?

谢谢

首先,链接是一个遗留function,首先创build一个用户定义的networking:

 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将为您的用户定义的networking运行一个dns server ,以便您可以通过名称ping其他容器。

 docker exec -it kibana /bin/bash ping elasticsearch 

您可以使用telnetcurl来validationkibana容器的kibana-> elasticsearch连接。

ps我最近使用了用户定义的networking的ELK栈的official (library)docker图像,它的工作就像一个魅力。

您可以在构buildkibana之前将ENV ELASTICSEARCH_URL=elasticsearch:9200添加到您的Dockerfile,然后使用docker-compose像这样使用kibana运行elasticsearch:

 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