Не удается получить доступ к порту на хосте, сопоставленному с портом контейнера docker

#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:

http://IPAddressOfHost:32771/

Я получаю сообщение об ошибке «отказано в подключении». Ниже приведен результат выполнения команды «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