主机操作系统: Windows 10 / VirtualBOX
访客OSA:
os: Ubuntu20.04 LTS
network adapter : internal network/nat
ip : enp0s8 static ip 172.168.0.1/255.255.255.0来宾OSB:
os: Ubuntu20.04 LTS
network adapter : internal network/nat
ip : enp0s8 static ip 172.168.0.2/255.255.255.0Docker版本20.10
ROS A: VirtualBOX上来宾操作系统上的Docker容器
version ros2 dashingROS B: VirtualBOX上来宾对象总线上的Docker容器
version ros2 dashing它可以在GuestOSA和GuestOSB之间通过UDP和TCP进行通信。(UDP: nc / TCP: ping)
Dockerfile
FROM ros:dashing
SHELL [“/bin/bash”, “-c”]
RUN apt-get update
RUN apt-install -y net-tools iputils-ping ros-dashing-demo-nodes-cppGuestOSA
docker run -itd -p 42000:42000/udp imagesid /bin/bash
docker exec -it containername /bin/bashROS A
source /opt/ros/dashing/setup.bash
ros2 run demo_nodes_cpp talkerGuestOSB
docker run -itd -p 42000:42000/udp imagesid /bin/bash
docker exec -it containername /bin/bashROS B
source /opt/ros/dashing/setup.bash
ros2 run demo_nodes_cpp listener这不起作用!!rosB无法捕获任何主题…
docker运行-itd --net=host imagesid /bin/bash它可以工作..
有什么区别..
发布于 2021-03-14 04:56:28
容器之间的通信并不需要将网络设置为host。容器可以发布端口槽,其他容器可以通过该端口槽与其通信。由于ROS同时支持TCP/IP和UDP/IP,因此要公开和发布哪个端口取决于ROS topic配置。这要求ROS topic使用单个端口。
https://stackoverflow.com/questions/66614193
复制相似问题