无法从主机访问在docker容器中运行的kibana Web UI和Elasticsearch

时间:2019-07-13 05:02:42

标签: docker elasticsearch kibana elastic-stack

我以ubuntu为基础从dockerfile构建了一个docker镜像。 我在其中手动安装elasticsearch kibana气流。我的容器的IP是 172.17.0.2 。我可以从172.17.0.2:8080从主机访问Airflow的Web UI。但是无法分别以172.17.0.2:5601和172.17.0.2:9200访问Kibana或elasticsearch。

以下是我的dockerfile中用于安装elasticsearch的摘录

RUN wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
RUN echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-6.x.list
RUN apt-get update
RUN apt-get install elasticsearch

请咨询, 谢谢!

2 个答案:

答案 0 :(得分:0)

实际上,我不知道您如何访问172.17.0.2:8080。但是常见的方法应该是发布端口,请参见this

对于您的情况,可能类似于:

docker run -it -p 5601:5601 -p 8080:8080 -p 9200:9200 your_image

然后,使用your_host_ip:5601your_host_ip:8080等(不是容器ip)访问容器服务。

答案 1 :(得分:0)

如果您已成功将kibana和docker安装在docker image内置容器中,则必须 EXPOSE 设置 kibana默认端口5601 elasticsearch默认端口9200 ,然后从本地主机访问它。您可以通过两种不同的方式来实现。例如:在dockerfile EXPOSE 5601 9200 8080上或在运行容器时。因此,如果您想访问位于Airflow容器中的Kibana UI或Elasticsearch,则可以删除现有容器并使用端口暴露重新运行它。假设-

container running时间,

docker run -it --name webui_kibana_elasticsearch -p 5601:5601 -p 9200:9200 -p 8080:8080 ec45652e2ca4 /bin/bash

dockerfile构建时,

EXPOSE 8080 5601 9200

或者,如果您想在单独的docker容器中使用Kibana和Elasticsearch,那么此文章将为您提供肯定的帮助。

在此处查看

https://docs.swiftybeaver.com/article/33-install-elasticsearch-kibana-via-docker

https://gist.github.com/sany2k8/347690434b282369890057d094218c7f