0

我的程序由 ROS1 和 ROS2 节点网络组成,它们是使用发布/订阅通信方式的软件。

假设有 4 个节点在自定义网络中运行:onboard_network。

这 4 个节点(ROS1)只能一起通信,因此我们有一个桥节点(ROS1 和 ROS2)需要位于 onboard_network 和主机网络的边缘。我们需要主机网络的原因是因为主机在VPN(Zerotier)内部。在 VPN 内部,我们还有我们的服务器 (ROS2)。

我们还需要新娘节点与主机网络一起工作,因为 ROS2 可以处理一些仅在主机模式下工作的多播内容。

所以基本上,我想要一个在 onboard_network 内运行 4 个容器的 docker compose 文件和一个在主机网络内运行的容器。最后一个容器需要从 onboard_network 中的容器中看到并且也能够看到它们。我该怎么做?甚至可能吗?

4

1 回答 1

0

如果您在主机网络上运行容器,其网络设置与在主机上运行的非容器进程相同。

不能将容器设置为同时使用主机网络和 Docker 网络。

这意味着,对于您的network_mode: host容器,它可以调用其他容器localhost作为主机名并发布它们ports:(因为它的网络是主机的网络)。对于您的桥接网络容器,它们可以使用host.docker.internalMacOS 或 Windows 主机上的特殊主机名调用主机网络容器,或者在 Linux 上它们需要找到一些可访问的 IP 地址(这将在从 Docker 容器内部进行进一步讨论,如何我要连接到机器的本地主机吗

于 2020-06-24T12:54:21.057 回答