【问题标题】:How to access docker container in a custom network from another docker container running with host network如何从使用主机网络运行的另一个 docker 容器访问自定义网络中的 docker 容器
【发布时间】:2020-06-24 11:44:00
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: docker vpn ros ros2


    【解决方案1】:

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

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

    这意味着,对于您的network_mode: host 容器,它可以使用localhost 作为主机名和它们发布的ports: 调用其他容器(因为它的网络是主机的网络)。对于您的桥接网络容器,他们可以在 MacOS 或 Windows 主机上使用特殊主机名 host.docker.internal 调用主机网络容器,或者在 Linux 上他们需要找到一些可访问的 IP 地址(这将在 From inside of a Docker container, how do I connect to the localhost of the machine? 中进一步讨论。

    【讨论】:

      猜你喜欢
      • 2020-07-17
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 2019-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多