#docker #dockerfile
#docker #dockerfile
Вопрос:
Я запустил контейнер docker с помощью команды
sudo docker run -it -P -d plcdimage
Образ создается с использованием Dockerfile, который содержит инструкцию EXPOSE 8080. Контейнер запускает сервер jboss с развернутым на нем приложением. Сопоставления портов являются :
Command: sudo docker port be1837e849dc
Output: 8080/tcp -> 0.0.0.0:32771
Когда я пытаюсь получить доступ к веб-приложению, запущенному на jboss в контейнере, с сопоставленного порта хоста, используя URL:
Я получаю сообщение об ошибке «отказано в подключении». Ниже приведен результат выполнения команды «netstat -tulpn»
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::9999 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 :::32771 :::* LISTEN -
udp 0 0 0.0.0.0:68 0.0.0.0:* -
Я попытался выполнить подсказку хостинга telnet 32771, и это также привело к отказу в подключении.
Docker version 1.12.1
build 23cf638
Что может быть возможной причиной этого?
Заранее спасибо
Комментарии:
1. Первое, что нужно проверить, действительно ли ваш контейнер прослушивает порт 8080. Вы можете получить IP-адрес вашего контейнера с помощью
docker inspect
и попробовать перейти с хоста наhttp://[container-ip]:8080
2. Каков результат
sudo docker ps
?
Ответ №1:
Я обнаружил, что сервер jboss, работающий внутри контейнера, не прослушивал 0.0.0.0. Один из вариантов сделать это — при запуске автономного сервера использовать -b 0.0.0.0.
/bin/standalone.sh -b 0.0.0.0