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

我用下面的Docker文件构build了一个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文件创build的映像运行容器,如下所示。

 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端口。

我不明白为什么这是。任何帮助将不胜感激。

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

当你在你自己的Dockerfile中使用CMD指令时,你可以覆盖来自父母Dockerfiles的一个。 由于您的CMD只启动gunicorn,elasticsearch和kibana永远不会启动。 这就是为什么他们各自的networking端口没有响应。

您从inheritance的Docker镜像inheritance自phusion / baseimage ,它有自己的方式让多个进程在Docker容器中运行。 我build议您按照自述文件中的说明学习如何将您的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