如何从不同的VM连接到Docker实例

我有一个在VirtualBox虚拟机中使用boot2docker在我的Mac上运行的docker。 然后我添加到我的Mac上的主机文件:

127.0.0.1 nginx 

在我的Mac上,我可以在浏览器中连接http://nginx ,并加载Docker容器中的网站。 我也有一个运行在VMWare Fusion中的Windows VM来testingIE。 在我的Windows VM上,我的主机文件configuration为:

 10.10.123.3 nginx 

10.10.123.3在我的mac的IP地址中,但是当我在窗口机器的浏览器中去http://nginx时,它不加载。 我将networking适配器设置为“Internet共享 – >与我的Mac共享”。 我也有一个简单的http服务器端口8000运行通过python,当我去http://nginx:8000它加载该网站,所以它似乎像我的networkingconfiguration和窗口主机文件configuration工作,而不是docker的东西。

有什么特别的,我必须做的能够揭露docker的东西到我的窗口虚拟机?

我想你会想跑

 boot2docker ip 

获取boot2docker oracle虚拟框的ip地址。 如果你启动docker容器与-p像:

 docker start -p 8000:8000 `imagename` 

然后使用http:// IpAddressOfOracleVirtBox:8000,如果你没有使用-p,那么容器中的任何端口都将被暴露。 第一个8000是虚拟盒子上的端口。第二个8000是容器的端口。 如果您希望将端口80从virt转发到容器中的8000,则可以执行-p 80:8000。

答案(由问题作者编辑)

使用boot2docker ip ,您只需使用该IP地址而不是Windows的VM hosts文件中的Mac IP地址。

我猜你不能访问机器,因为networking方法“互联网共享 – >与我的Mac共享”只允许VM通过你的Mac访问互联网。

我认为你必须在虚拟机,桥接模式或内部networking中创build另一个networking。

您使用的networking方法只允许虚拟机访问互联网,而不是您的networking中的其他地址。

我猜桥接模式更容易,因为虚拟机会从你的路由器networking获得一个IP地址。

我没有Mac在这里testing,但我想这是你的问题。

我希望能帮助你。