Не удается получить доступ к Kibana, работающему в контейнере Docker на порту 5601.

Я создал образ докера со следующим файлом Docker.

# gunicorn-flask                                                                                                                                                                         

FROM devdb/kibana

MAINTAINER John Doe <[email protected]>

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, хотя.

Я не могу понять, почему это так. Любая помощь будет принята с благодарностью.


person liv2hak    schedule 22.06.2015    source источник


Ответы (1)


Родительский файл Dockerfile devdb/kibana использует скрипт для запуска kibana и elasticsearch при запуске контейнера докеров. См. CMD ["/sbin/my_init"] и сам скрипт.

Когда в вашем собственном файле Docker вы используете инструкцию CMD, вы переопределяете инструкцию из родителей Докерфайлы. Поскольку ваш CMD запускает только пушку, elasticsearch и kibana никогда не будут запущены. Вот почему на соответствующих сетевых портах нет ответа.

Образ Docker, от которого вы наследуете, наследуется от phusion/baseimage, у которого есть собственный способ создания нескольких процессов. запускать в контейнерах Docker. Я рекомендую вам следовать инструкциям в файле README, чтобы узнать, как добавить ваш gunicorn в список сервисов для запуска. По сути, вам нужно определить скрипт с именем run и добавить его в образ докера в каталоге /etc/service/<service name>/.

В свой Dockerfile добавьте:

COPY run /etc/service/gunicorn/

а скрипт run должен быть примерно таким:

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