无法从互联网访问 VirtualBox 上的 Docker 容器

无法从互联网访问 VirtualBox 上的 Docker 容器

我在 Windows 10 上安装了 ToolBox。
已经创建了机器和 Nginx 容器,并在端口 8000 上打开外部。

在此处输入图片描述

Docker 机器的 IP 是192.168.99.100,容器的 IP 是172.17.0.2
我可以从 Windows 访问 Nginx 192.168.99.100:8000。甚至,我可以从 Windows 主机直接访问172.17.0.2:80。我也可以从容器内部访问 Internet。

总体配置如下:

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

问题是我无法在 Windows 主机之外连接 Nginx。telnet 192.168.1.3 8000从路由器尝试 - 连接被拒绝。我的 Windows 机器上没有任何防病毒软件,并且防火墙已关闭。

答案1

过了一段时间,我自己找到了解决方案:)

VirtualBox -> Machine settings -> Network -> Adapter 1 (NAT) -> Advanced, Port Forwarding

http添加如下截图所示的规则:

在此处输入图片描述

规则ssh已自动添加。最后一个问题是当docker创建暴露端口的容器时docker-machine create如何自动添加规则。http

答案2

您的标题是互联网,但您的解决方案更倾向于指 LAN。

此代码执行类似的技巧:

netsh interface portproxy add v4tov4 listenport=80 connectaddress=192.168.99.100 connectport=8000 protocol=tcp

相关内容