通过Windows虚拟机中的boot2docker访问OS X上运行的Docker容器

时间:2014-12-08 10:38:54

标签: macos virtualbox boot2docker

概述:

主机:运行boot2docker和Docker的Mac OS X 访客:Windows 7

问题:

对于我的网站开发,我在OS X上通过boot2docker设置了一个docker容器。在OS X中,我可以通过boot2docker访问我的docker服务。

运行boot2docker ip,我得到:

The VM's Host only interface IP address is: 192.168.59.103

我正在端口1234上运行Django应用程序(我已将docker镜像上的端口5000映射到我的Mac上的端口1234),我可以通过地址192.168.59.103:1234在Web浏览器中访问OS X 。在OS X中一切正常。

现在我必须在IE上测试Web内容,这就是我通过Microsofts modern.IE网站下载IE8,IE10等的原因。因此,我有一些VirtualBox图像,它们运行的​​是Windows 7,并附带了适用的IE版本。

现在的问题是如何访问这些Windows实例中的Docker容器,以便在几个IE版本下对其进行测试。

到目前为止我做了什么:

创意1

要访问Django应用程序,我已查找了我的本地IP地址,并尝试通过Windows中的NAT访问它。鉴于我的本地IP地址192.168.178.24,我尝试从Windows访问192.168.178.24:1234。虽然我可以从Windows ping 192.168.178.24,但我只在端口1234上获得超时。

创意2

Boot2docker运行名为boot2docker-vm的VirtualBox机器。它带有两个网络适配器,NAT和一个名为vboxnet0的仅限主机的适配器。后者使用网络掩码192.168.59.3具有地址boot2docker ip255.255.255.0返回的地址}。它在服务器地址192.168.59.99上运行DHCP服务器,该地址来自192.168.59.103-254

我为我的Windows客户系统添加了第二个网络适配器,它也可以通过仅限主机的适配器访问网络vboxnet0。连接到网络时,Windows计算机会获得有效的IP,可以 ping IP 192.168.59.103。但我无法连接到端口1234上的Django实例。如果我尝试在Windows中调用192.168.59.103:1234,我会超时。

为什么无法连接到Django实例?你能帮助我吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

我找到了解决问题here的方法。 要访问Django实例,我必须打开boot2docker-vm机器上的端口。

这可以通过boot2docker-vm → settings → Network → Adapter 1 (NAT) → Port Forwarding完成并添加新规则,其中Host IPGuest IP可以留空,Host PortGuest Port应该是设为1234

另一种方法是在命令行中执行以下命令

VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port1234,tcp,,1234,,1234";

当然,如果正在使用多个端口,则需要对所有端口进行此操作。