Назад | Перейти на главную страницу

Не удалось подключиться к порту 5000 localhost: в соединении отказано с помощью Docker

Я создал свое небольшое приложение на Python (фляга). Здесь находится контейнер docker ps

CONTAINER ID        IMAGE                          COMMAND             CREATED             STATUS              PORTS                NAMES
4146fd976547        identidock_identidock:latest   "/cmd.sh"           5 minutes ago       Up 5 minutes        9090/tcp, 9191/tcp   agitated_leakey

Если я попробую

curl localhost:5000
curl: (7) Failed to connect to localhost port 5000: Connection refused

Я проверил sudo netstat -an | grep -E "5000" unix 3 [] ПОТОК СОЕДИНЕН 25000

Он не просматривает строку 5000. yaml с портами

  ports:
   - "5000:5000"

Если я запустил свой контейнер

docker exec -it agitated_leakey /bin/bash
uwsgi@4146fd976547:/app$ netstat -ln
bash: netstat: command not found

Мой Dockerfile

RUN pip install Flask==0.10.1 uWSGI==2.0.8
WORKDIR /app
COPY app /app
COPY cmd.sh /

EXPOSE 9090 9191

Почему так происходит?

Из вывода docker ps кажется, что ваш порт не был открыт.

$ docker run -d -p 5000:5000 flask-sample-one

Запустите контейнер, отображающий порт, и, если вы все еще столкнетесь с той же проблемой, ssh с контейнером, и используйте следующую команду.

netstat -lntp | grep :5000

Кажется, netstat не установлен в контейнере. Вы можете запустить yum install netstat установить и проверить.

это руководство поможет вам проверить. Проверьте docker ps вывод в конце.

Альтернативная проблема может быть связана с режимом. В разделе публикации мне нужно было установить mode явно на хост, и все сработало:

docker service create --name registry --publish published=5000,target=5000,mode=host registry:2