当前位置: 首页 > news >正文

容器之间ros2可发现topic没有数据

Date:2026.05.31
Author:aimage

一、简介

应用docker-compose进行不同容器的管理,容器间用ros2进行通讯,发现只能发现topic,但是没有数据。

docker-compose.yaml为:

services: get_rtsp: image: ${IMAGE} container_name: get_rtsp restart: on-failure privileged: true network_mode: "host" working_dir: /home/aimage/Workspace/dev/get_rtsp_ws environment: - DISPLAY=:0 volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - /home/aimage/Workspace/dev/get_rtsp_ws:/home/aimage/Workspace/dev/get_rtsp_ws command: ./run.sh logging: driver: "local" options: max-size: "10m" max-file: "10" push_stream: image: ${IMAGE} container_name: push_stream restart: on-failure privileged: true network_mode: "host" working_dir: /home/aimage/Workspace/dev/push_stream_ws environment: - DISPLAY=:0 volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - /home/aimage/Workspace/dev/push_stream_ws:/home/siasun/Workspace/dev/push_stream_ws command: ./run.sh logging: driver: "local" options: max-size: "10m" max-file: "10"

二、原因

1)ROS2 Humble 默认 FastDDS 开启共享内存传输;
2)同一台机器、同一 ROS_DOMAIN_ID 的进程,优先走 本地共享内存 收发消息,不走网络套接字;
3)所有容器都是 network_mode: host,共享宿主机内存空间,但容器 PID 命名空间隔离;
因此:
DDS 发现机制(基于 UDP 广播)正常, ros2 topic list 能看到话题
共享内存句柄 / PID 对端不可见, 消息无法通过SHM 投递,回调不触发

三、解决

所有容器共享宿主机的 /dev/shm、System V 共享内存、信号量。

在docker-compose.yaml中增加选项
ipc: host

问题完美解决。

学习记录系列文章,难免有纰漏,欢迎您的宝贵意见!!!

四、参考

[1] https://blog.csdn.net/qq_36176663/article/details/159388384

http://www.zskr.cn/news/1437476.html

相关文章:

  • 小学期第三周
  • 云成本治理框架:优化云计算成本
  • 避坑指南:高通SA8255P平台Nor Flash烧录全流程与‘先擦后写’的血泪教训
  • Masa Mods中文汉化包:为你的Minecraft 1.21模组体验注入母语力量!
  • 2026年苏州本地防水补漏行业三家合规经营服务机构信息梳理分析 专业防水公司排名推荐(2026年5月防水补漏最新TOP权威排名) - 鼎壹万修缮说
  • 2026年5月新消息:寻找行业内比较好的铠装通信电缆品牌,这几家值得关注 - 2026年企业资讯
  • 仅限头部客户启用的Gemini深度监测模块(含暗网论坛追踪+小红书种草溯源)
  • 源站 IP 暴露被直接打穿?这套 AWS 纵深防御方案你一定用得上
  • 达梦 DMHS/DRS 数据同步技术解析
  • 2026产品专员职场提升能力的有效途径
  • 2026年6月浙江专业奶茶瓶生产厂商盘点:为何畅维包装备受品牌青睐? - 2026年企业资讯
  • 零起点Python机器学习快速入门【1.4】
  • 2026产品运营如何提升职场素养打造专业形象
  • 阜阳名酒回收服务评测:青春煮酒与同行横向对比 - 优质品牌商家
  • DSP28035双电压供电电路设计
  • WarcraftHelper:3步解锁魔兽争霸III现代游戏体验的技术指南
  • Linux上使用QEMU安装Android-x86虚拟机(转)
  • JAVA:字符串反转
  • 高并发系统设计:应对海量请求的技术实践
  • Gemini推送通知优化终极手册(2024Q2最新API v1.5实测数据+AB测试报告)
  • 纯视觉无感全域赋能 跨镜无缝接力重塑精细化安防能力技术解析方案
  • 递归函数的空间复杂度实例剖析
  • 2026年熊猫烟花性价比排名,靠谱的燃放公司推荐 - mypinpai
  • 数智空间动态重构 跨镜连续追踪筑牢各行业安全底座技术解析方案
  • 为什么你的Gemini引导转化率低于行业均值38%?——基于17家头部AI产品引导链路的逆向工程分析
  • Java程序设计(第3版)第四章——错误:空指针异常
  • 2026年5月新发布:湖南地区寻求专业营销策划团队的可靠选择指南 - 2026年企业资讯
  • 收藏!C语言入门基础知识大全2
  • 云原生架构深度解析与 Python 容器编排管理器核心实现
  • Gemini服务升级全链路影响评估,含LangChain/LLamaIndex/LangGraph兼容性矩阵(限时开放下载)