首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在virtualbox上的ubuntu上多个机器的容器共享同一网络时需要设置"network_mode: host“

为什么在virtualbox上的ubuntu上多个机器的容器共享同一网络时需要设置"network_mode: host“
EN

Stack Overflow用户
提问于 2021-03-13 21:42:09
回答 1查看 114关注 0票数 0

主机操作系统: Windows 10 / VirtualBOX

访客OSA:

代码语言:javascript
复制
os: Ubuntu20.04 LTS
network adapter : internal network/nat
ip : enp0s8 static ip 172.168.0.1/255.255.255.0

来宾OSB:

代码语言:javascript
复制
os: Ubuntu20.04 LTS
network adapter : internal network/nat
ip : enp0s8 static ip 172.168.0.2/255.255.255.0

Docker版本20.10

ROS A: VirtualBOX上来宾操作系统上的Docker容器

代码语言:javascript
复制
version ros2 dashing

ROS B: VirtualBOX上来宾对象总线上的Docker容器

代码语言:javascript
复制
version ros2 dashing

它可以在GuestOSA和GuestOSB之间通过UDP和TCP进行通信。(UDP: nc / TCP: ping)

Dockerfile

代码语言:javascript
复制
FROM ros:dashing
SHELL [“/bin/bash”, “-c”]
RUN apt-get update
RUN apt-install -y net-tools iputils-ping ros-dashing-demo-nodes-cpp

GuestOSA

代码语言:javascript
复制
docker run -itd -p 42000:42000/udp imagesid /bin/bash
docker exec -it containername /bin/bash

ROS A

代码语言:javascript
复制
source /opt/ros/dashing/setup.bash
ros2 run demo_nodes_cpp talker

GuestOSB

代码语言:javascript
复制
docker run -itd -p 42000:42000/udp imagesid /bin/bash
docker exec -it containername /bin/bash

ROS B

代码语言:javascript
复制
source /opt/ros/dashing/setup.bash
ros2 run demo_nodes_cpp listener

这不起作用!!rosB无法捕获任何主题…

docker运行-itd --net=host imagesid /bin/bash它可以工作..

有什么区别..

EN

回答 1

Stack Overflow用户

发布于 2021-03-14 04:56:28

容器之间的通信并不需要将网络设置为host。容器可以发布端口槽,其他容器可以通过该端口槽与其通信。由于ROS同时支持TCP/IPUDP/IP,因此要公开和发布哪个端口取决于ROS topic配置。这要求ROS topic使用单个端口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66614193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档