Я создал свое небольшое приложение на 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