无法从 Internet 访问 virtualbox 上的 docker 容器

Ale*_*xey 9 virtualbox docker-for-windows

我在 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
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*xey 7

一段时间后自己找到解决方案:)

VirtualBox -> Machine settings -> Network -> Adapter 1 (NAT) -> Advanced, Port Forwarding
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

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