gpt4 book ai didi

macos - docker 的 `net=host` 设置如何工作,我该如何做类似的事情,例如虚拟机?

转载 作者:IT老高 更新时间:2023-10-28 12:40:17 25 4
gpt4 key购买 nike

Docker 有一个运行选项 net=host documented here这允许您运行与主机共享网络堆栈的虚拟机 - 例如,docker 容器内的进程可以通过 localhost 连接到主机,反之亦然。

我想在 Mac OS X 上设置一个 Linux 虚拟机来做同样的事情;我试过使用 Vagrant 及其各种网络设置,但运气不佳。

Docker 的 VM 是否依赖于作为 Linux 的主机和 guest 操作系统,或者有什么方法可以完成我缺少的这个 OSX->Linux?

最佳答案

感谢同事的帮助,我找到了解决此问题的方法。此解决方案适用于 boot2docker/VirtualBox。我刚刚使用 boot2docker init 创建了我的 docker VM,我没有对 VM 配置进行任何特定更改。

首先,您使用 --net=host 运行 docker 镜像,以便它与主机 VM 共享网络,例如

docker run -it --net=host ubuntu bash

然后你需要从用于 docker 容器的 VM 中找到 IP 地址,你可以通过运行 OSX 主机的 boot2docker ssh 来做到这一点。然后,您可以通过查找其网关来找到 VM 的 IP 地址:

$ netstat -rn | grep UG | awk '{print $2}'
10.0.2.2

所以就我而言,它是 10.0.2.2。您现在可以使用此 IP 地址从您的 docker 容器访问主机上打开的端口,即在 OSX 上运行的程序上。

要自动化,您可以先找到 IP 地址,然后将其作为环境变量传递给 docker 命令...

关于macos - docker 的 `net=host` 设置如何工作,我该如何做类似的事情,例如虚拟机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25170738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com