Docker 用于 Windows 主机网络堆栈使用

Docker for Windows Host Network Stack Use

目前,我正在开展一个项目,我们使用 ROS、Bebop_autonomy 和 OpenCV 来自主控制 Parrot Bebop2。我们在工作区使用的机器是 运行ning Ubuntu 14.04.5,我可以使用镜像

来启动一个容器

我用 "docker run -it --network=host username/image" 创建了。在容器内配置完所有内容后,bebop_autonomy 节点就可以正常在 Bebop 的网络上进行通信了。当您在容器和主机中 运行 ip addr 时,它们会显示相同的地址,正如您所期望的那样。

然而,在我的 Windows 机器上尝试 运行 它时,IP 与主机不同,当我尝试与主机通信时,我从未收到任何 ACK 数据包哔哔。我假设这是因为数据包没有被发送到正确的 ip,或者它们没有被正确转发。

我已经尝试创建自己的网络并使用 "docker network create" 手动设置 ip 并将其作为参数传递给 运行 命令,但我似乎无法让它工作根本。我也曾尝试在 Hyper-V 管理器中创建不同的开关,但最近几天我读到的任何东西都没有帮助我解决这个问题。

我已经很好地掌握了 docker 的工作原理,但是我看到的大部分参考资料 material 都在谈论已经 运行 的主机 linux.如果我想不通,我们一开始就继续 docker 几乎没用。

有什么方法可以配置 Docker 让 Windows 在提供 --network=host 时以与 Docker 对 Linux 相同的方式工作?

我最终通过在 Hyper-V 管理器中创建一个单独的网络来实现我想要的,将该网络设置为仅使用外部 wifi 适配器,并且 运行 使用该网络的容器。不过必须有更好的方法。