Не удается получить доступ к Docker-контейнеру на виртуальной коробке из Интернета
У меня ToolBox установлен на Windows 10.
Создал машину и контейнер Nginx, открытый снаружи на порт 8000.
IP-адрес докера 192.168.99.100
IP-адрес контейнера 172.17.0.2
,
Я могу получить доступ к Nginx из Windows как 192.168.99.100:8000
, Более того, я могу получить доступ с хоста Windows напрямую к 172.17.0.2:80
, Также я могу получить доступ к Интернету изнутри контейнера.
У всех конфигурация такая:
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
Проблема в том, что я не могу подключить Nginx к Windows хосту. Пытался telnet 192.168.1.3 8000
от роутера - соединение отказано. У меня нет никакого антивируса на машине Windows, и firewal выключен.
2 ответа
Через некоторое время я нашел решение для себя:)
VirtualBox -> Machine settings -> Network -> Adapter 1 (NAT) -> Advanced, Port Forwarding
Добавить правило как http
на скриншоте:
правило ssh
был автоматически добавлен docker-machine create
, Последний вопрос, как добавить http
Правило автоматически, когда Docker создает контейнер с открытыми портами.
Your title is internet, but your solution prefer you mean LAN.
this code do the similar trick:
netsh interface portproxy add v4tov4 listenport=80 connectaddress=192.168.99.100 connectport=8000 protocol=tcp