繁体   English   中英

从同样位于 boot2docker vm 内的 Docker 容器以 localhost 身份访问主机

[英]Accessing host machine as localhost from a Docker container that's also inside a boot2docker vm

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

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

然后我尝试了这样的端口转发解决方法VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port8000,tcp,,8000,,8000"; 无济于事。

任何建议将不胜感激。

感谢 palimpestor 的回答,我想通了:

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

的确:

  • 10.0.2.2 是为 NAT 模式下的访客网络接口定义的默认网关( 参考)。
    阅读:这是你的主机,从 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。

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

从 18.3 开始,docker 团队为我们提供了服务:

我们使用别名host.docker.internal

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

网关也可以作为gateway.docker.internal访问。

https://docs.docker.com/docker-for-windows/networking/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM