从Docker容器访问主机作为localhost,该容器也在boot2docker vm中

时间:2015-05-28 01:50:21

标签: docker boot2docker

假设我在OSX上的端口8000上运行了服务器。我的Docker容器如何通过--net="host"访问它?我也无法更改主机名,因为容器中的应用程序不在我的控制范围内。

我已经阅读了之前关于使用--net="host"容器访问主机网络的讨论。但是,我在OSX上运行并且Docker在VM内部运行,因此来自Docker容器的 localhost VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port8000,tcp,,8000,,8000";将转到VM而不是我的真实机器。

然后我尝试了port forwarding workaround,{{1}}无效。

任何建议都将不胜感激。

3 个答案:

答案 0 :(得分:46)

感谢palimpestor的答案我明白了:

使用--net="host"

而不是--add-host="localhost:10.0.2.2"

事实上:

  • 10.0.2.2是在NAT模式(reference)中为访客网络接口定义的默认网关 阅读:它是您的主机,从boot2docker看。
  • --add-host...正在/ etc / hosts中添加localhost 10.0.2.2 reference

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

答案 1 :(得分:14)

请尝试使用--net="host",而不是--add-host="localhost:192.168.59.3"

1。

答案 2 :(得分:1)

如果我理解您的意图,那就是:从容器连接到主机端口

从18.3开始,码头工人团队已经为我们覆盖:

使用别名host.docker.internal

我想从主机连接到主机上的服务 主机的IP地址正在更改(如果没有网络访问权限,则没有IP地址)。从18.03开始,我们建议连接到特殊的DNS名称host.docker.internal,该名称解析为主机使用的内部IP地址。这是出于开发目的,不适用于Windows的Docker Desktop以外的生产环境。

网关也可以通过gateway.docker.internal访问。

standard ranges