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

How to connect to Docker instance from a different VM

我的 Mac 上有 docker 运行,在 VirtualBox VM 中有 boot2docker。然后我将 Mac:

添加到我的主机文件中
127.0.0.1 nginx

在我的 Mac 上,我可以在浏览器中连接 http://nginx 并加载 docker 容器中的网站。为了测试 IE,我在 VMWare Fusion 中也有一个 Windows VM 运行。在我的 Windows VM 上,我将主机文件配置为:

10.10.123.3 nginx

10.10.123.3 在我的 mac 的 IP 地址中,但是当我在 window machine 的浏览器中转到 http://nginx 时,它确实不加载。我将网络适配器设置为 "Internet Sharing -> Share with my Mac"。我还有一个简单的 http 服务器 运行 通过 python 在端口 8000 上,当我去 http://nginx:8000 时它确实加载了那个站点所以它看起来像我的网络配置和 window主机文件配置正在运行,只是不适用于 docker 东西。

我是否需要做一些特别的事情才能将 docker 内容暴露给我的 window 虚拟机?

我想你会想要 运行

boot2docker ip

获取boot2dockeroracle虚拟盒子的ip地址。如果您使用 -p 启动 docker 容器,例如:

docker start -p 8000:8000 `imagename`

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

回答(问题作者编辑)

使用 boot2docker ip 后,您只需使用该 IP 地址,而不是 Window 的 VM 主机文件中 Mac 的 IP 地址。

我猜你无法访问机器,因为网络方法 "Internet Sharing -> Share with my Mac" 只允许虚拟机通过你的 Mac 访问互联网。

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

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

我想桥接模式更容易,因为 VM 将从您的路由器网络获得一个 IP 地址。

我没有 Mac 可以在这里测试,但我想这就是你遇到的问题。

希望对你有帮助