无法访问在端口5601上的Docker容器中运行的Kibana

时间:2015-06-22 22:48:52

标签: elasticsearch docker dockerfile kibana-4

我使用以下Docker文件构建了一个docker镜像。

# gunicorn-flask                                                                                                                                                                         

FROM devdb/kibana

MAINTAINER John Doe <user.name@gmail.com>

ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update
RUN apt-get install -y python python-pip python-virtualenv gunicorn

# Setup flask application
RUN mkdir -p /deploy/app

COPY gunicorn_config.py /deploy/gunicorn_config.py
COPY app /deploy/app

RUN pip install -r /deploy/app/requirements.txt

WORKDIR /deploy/app

EXPOSE 5000 5601 9200

# Start gunicorn
CMD ["/usr/bin/gunicorn", "--config", "/deploy/gunicorn_config.py", "listener:app"]

我正在从此Docker文件创建的映像中运行容器,如下所示。

sudo docker run -p 5601:5601 -p 9200:9200 -p 5000:5000 -v /home/Workspace/xits/config/elasticsearch.yml:/opt/elasticsearch/config/elasticsearch.yml -v /home/Workspace/xits/config/kibana.yml:/opt/kibana/config/kibana.yml es-kibana-gunicorn:latest

我面临的问题是我无法访问主机上的Kibana端口5601。我的浏览器页面显示ERR_CONNECTION_REFUSED

我可以访问端口5000。

我无法弄清楚为什么会这样。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

父Dockerfile devdb/kibana正在使用脚本启动docker容器时启动kibana和elasticsearch。请参阅CMD ["/sbin/my_init"]the script本身。

当您在自己的Dockerfile中使用CMD指令时,将覆盖父目录Dockerfiles中的指令。 由于你的CMD只开始使用gunicorn,因此不会启动elasticsearch和kibana。这就是为什么各自的网络端口没有响应的原因。

您继承的Docker镜像从phusion/baseimage继承自身,它有自己的方式使多个进程在Docker容器中运行。我建议您按照其README文件中的instructions了解如何将gunicorn添加到要启动的服务列表中。基本上,您必须定义名为run的脚本,并将其添加到/etc/service/<service name>/目录中的docker镜像中。

在Dockerfile中,添加:

COPY run /etc/service/gunicorn/

run脚本应该类似于:

#!/bin/bash
cd /deploy/app
/usr/bin/gunicorn --config /deploy/gunicorn_config.py listener:app