
Tengo ToolBox instalado en Windows 10.
Creé la máquina y el contenedor Nginx, abierto afuera en el puerto 8000.
La IP de la máquina Docker es 192.168.99.100
, la IP del contenedor es 172.17.0.2
.
Puedo acceder a Nginx desde Windows como 192.168.99.100:8000
. Aún más, puedo acceder desde el host de Windows directamente a 172.17.0.2:80
. También puedo acceder a Internet desde el interior del contenedor.
En general la configuración es la siguiente:
Container (Nginx) Docker Host (VirtualBox) Host (Windows 10) Router
172.17.0.2:80 <-----------> 172.17.0.1 (docker0)
10.0.2.15 (eth0)
192.168.99.100:8000 (eth1) <------> 192.168.99.1 (Ethernet 2, VirtualBox Host-Only Ethernet Adapter)
192.168.1.3 (Ethernet, Intel Hardware Adapter) <--------------------> 192.168.1.1
<Internet static IP address> <-----------> Provider
El problema es que no puedo conectar Nginx fuera del host de Windows. Intenté telnet 192.168.1.3 8000
desde el enrutador: se rechazó la conexión. No tengo ningún antivirus en la máquina con Windows y el firewall está desactivado.
Respuesta1
Después de un tiempo, encontré la solución yo mismo :)
VirtualBox -> Machine settings -> Network -> Adapter 1 (NAT) -> Advanced, Port Forwarding
Agregue una regla como http
en la captura de pantalla:
La regla ssh
ha sido agregada automáticamente por docker-machine create
. La última pregunta es cómo agregar http
una regla automáticamente cuando Docker crea un contenedor con puertos expuestos.
Respuesta2
Su título es Internet, pero su solución prefiere que se refiera a LAN.
este código hace un truco similar:
netsh interface portproxy add v4tov4 listenport=80 connectaddress=192.168.99.100 connectport=8000 protocol=tcp