Acceso Docker reenviado puerto en Mac

Aquí hay una publicación relacionada: Asignación de puertos en Docker en Mac OSX instalada con Docker Toolbox

pero no funcionó para mí

Obtener puertos para contenedor

puerto de acoplador 485186e65a5e

8080/tcp -> 0.0.0.0:33360 8088/tcp -> 0.0.0.0:33359 19888/tcp -> 0.0.0.0:33358 50070/tcp -> 0.0.0.0:33357 50075/tcp -> 0.0.0.0:33356 8042/tcp -> 0.0.0.0:33361 

Verifique que alguien escuche los puertos en un contenedor

 bash-4.1# netstat -alnpt | grep 19888 tcp 0 0 127.0.0.1:19888 0.0.0.0:* LISTEN 1094/java 

Hacer wget en contenedor

 bash-4.1# wget 127.0.0.1:19888 --2016-04-11 14:16:54-- http://127.0.0.1:19888/ Connecting to 127.0.0.1:19888... connected. HTTP request sent, awaiting response... 302 Found Location: http://127.0.0.1:19888/jobhistory [following] --2016-04-11 14:16:54-- http://127.0.0.1:19888/jobhistory Reusing existing connection to 127.0.0.1:19888. HTTP request sent, awaiting response... 200 OK Length: 6763 (6.6K) [text/html] Saving to: `index.html' 100%[================================================================================================================================================================================>] 6,763 --.-K/s in 0s 2016-04-11 14:16:54 (182 MB/s) - `index.html' saved [6763/6763] 

Intente acceder al puerto reenviado desde el host, sin suerte …: (((

 $docker-machine ip default 192.168.99.100 $ wget 192.168.99.100:33358 --2016-04-11 16:18:04-- http://192.168.99.100:33358/ Connecting to 192.168.99.100:33358... failed: Connection refused. 

¿Qué hago mal?

Omg, el service deseado comenzó en 127.0.0.1 en contenedor, es por eso que no era visible desde fuera del mundo. Modifiqué la configuration de service para iniciar en 0.0.0.0 y ahora puedo acceder al puerto de contenedor reenviado

Tuve el mismo problema y pude solucionarlo especificando el host que usa el server dentro del contenedor.

NOTA: cuando se utiliza el host a continuación, significa un server de server web. Cuando uso máquina-máquina , me refiero al sistema operativo principal que estoy usando, (es decir, no un contenedor o un server web, solo mi computadora portátil como una máquina)

El problema

Ejecutar serveres web en el contenedor como webpack-dev-server y http-server ejecutan automáticamente la aplicación usando un host de http://localhost . Normalmente verá eso en la salida cuando inicie el server. Algo como :

Project is running at http://localhost:8080

o

Server available at http://127.0.0.1:8080

En la mayoría de las máquinas, localhost y 127.0.0.1 son lo mismo. Este host no es visible públicamente . Como resultado, su máquina host no puede ver nada, aunque esté buscando en el lugar correcto.

Solución

Debe especificar un host público cuando ejecuta el server dentro de su contenedor.

webpack-dev-server --port 8080 --host 0.0.0.0

o

http-server -p 8080 -a 0.0.0.0

Debido a que la dirección 0.0.0.0 se puede ver en cualquier máquina externa, debería poder ver su aplicación funcionando como se espera de su equipo host.

NOTA: Esto funciona para cualquier server, como el server SimpleHTTPS de Python, etc. Simplemente busque cómo cambiar el host para su server elegido en la documentation

Recursos / Nods (cómo ejecutar webpack-dev-erver con un host de acceso público) [ ¿Cómo hacer que el server de desarrollo webpack se ejecute en el puerto 80 y en 0.0.0.0 para que sea de acceso público?