从一个也在boot2docker虚拟机中的Docker容器作为localhost访问主机

假设我有一个在OSX上的8000端口上运行的服务器。 我的Docker容器如何通过localhost:8000访问它? 我无法更改主机名称,因为容器中的应用程序不在我的控制范围之内。

我已经阅读了前面有关使用--net="host"来访问主机networking的容器的讨论。 但是,我在OSX上,Docker在虚拟机中运行,所以Docker容器中的localhost使用--net="host"进入虚拟机,而不是真正的机器。

然后我尝试端口转发的解决方法,如下所示: VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port8000,tcp,,8000,,8000"; 无济于事。

任何build议将不胜感激。

感谢palimpestor的回答,我发现:

而不是--net="host" ,使用--add-host="localhost:10.0.2.2"

确实:

  • 10.0.2.2是NAT模式( 参考 )中为访客networking接口定义的默认网关。
    阅读: 这是你的主机,从boot2docker看。
  • --add-host...正在/ etc / hosts中添加localhost 10.0.2.2 ( 引用 )

注意:您需要在boot2docker VM VirtualBox设置中设置一个NAT适配器(我通过GUI完成,不知道CLI)。

而不是使用--net="host"运行,请尝试--add-host="localhost:192.168.59.3" ,这是boot2docker主机IP。