Docker进阶——多容器编排和机器人仿真环境搭建 面试翻车现场上篇讲了Docker基础有读者问机器人系统那么复杂一个容器够吗确实不够。一个完整的机器人系统通常包含多个组件导航、感知、规划、控制、仿真器……每个组件都有各自的依赖。如果全塞进一个容器镜像会很大而且难以维护。Docker Compose可以解决这个问题——用多个容器分别运行不同的组件统一管理。今天咱们聊聊Docker进阶用法。Docker Compose多容器编排Docker Compose是一个工具用YAML文件定义和运行多容器应用。安装Docker Composesudo apt install docker-compose-plugin创建一个docker-compose.yml文件version: 3.8 services: ros-master: image: osrf/ros:humble-desktop-full container_name: ros_master command: ros2 run demo_nodes_cpp talker networks: - robot_net robot-node: image: osrf/ros:humble-desktop-full container_name: robot_node command: ros2 run demo_nodes_py listener networks: - robot_net depends_on: - ros-master networks: robot_net: driver: bridge启动所有服务docker-compose up -d # -d表示后台运行查看状态docker-compose ps # 列出所有容器 docker-compose logs # 查看所有日志 docker-compose logs -f robot-node # 实时跟踪某个服务的日志停止所有服务docker-compose down机器人仿真环境搭建用Docker搭建Gazebo仿真环境需要处理图形显示的问题。方法1使用X11转发version: 3.8 services: gazebo: image: osrf/ros:humble-desktop-full container_name: gazebo_sim environment: - DISPLAY$DISPLAY - QT_X11_NO_MITSHM1 volumes: - /tmp/.X11-unix:/tmp/.X11-unix:rw command: ros2 launch gazebo_ros gazebo.launch.py network_mode: host启动前需要允许本地X server连接xhost local:docker方法2使用noVNC浏览器访问如果机器人没有显示器可以用noVNC通过浏览器访问图形界面version: 3.8 services: gazebo: image: tiryoh/ros2-desktop-vnc:humble container_name: gazebo_vnc ports: - 6080:80 # noVNC端口 environment: - RESOLUTION1920x1080 shm_size: 2gb # 共享内存Gazebo需要启动后浏览器访问http://localhost:6080就能看到Gazebo界面。GPU加速容器里用显卡机器人仿真需要GPU加速。Docker默认不支持GPU需要安装NVIDIA Container Toolkit# 安装NVIDIA驱动和CUDA宿主机 # 然后安装NVIDIA Container Toolkit distribution$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt update sudo apt install -y nvidia-container-toolkit sudo systemctl restart docker在docker-compose.yml里启用GPUservices: gazebo: image: osrf/ros:humble-desktop-full deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu]或者用docker rundocker run --gpus all -it osrf/ros:humble-desktop-full bash数据持久化和共享多个容器需要共享数据时用命名卷named volumeversion: 3.8 services: robot1: image: robot-dev:v1 volumes: - shared_data:/data robot2: image: robot-dev:v1 volumes: - shared_data:/data volumes: shared_data: driver: local driver_opts: type: none o: bind device: /home/robot/shared这样两个容器都能访问/home/robot/shared目录。和机器人开发的关系Docker Compose在机器人开发中的典型应用多机器人仿真每个机器人一个容器共享网络模拟多机器人协作场景。分离开发和仿真开发容器编译代码仿真容器运行Gazebo通过共享卷或网络通信。CI/CD流水线代码提交后自动在容器里编译、测试确保每次提交都在干净环境里验证。快速部署开发环境打包成镜像部署到机器人上也是同一套镜像避免环境差异导致的问题。面试常见考点Docker Compose和Docker的区别——Docker是单容器管理工具Docker Compose是多容器编排工具。Compose用YAML文件定义多个服务一条命令启动所有容器。容器之间怎么通信——同一个docker-compose网络里的容器可以用容器名作为主机名互相访问。比如robot-node可以通过ros-master这个主机名访问另一个容器。怎么在容器里使用GPU——安装NVIDIA Container Toolkit运行时加--gpus all参数或在compose文件里配置GPU资源。Docker容器数据怎么持久化——用数据卷volume或绑定挂载bind mount。容器删除后数据卷里的数据还在。Docker Compose与多容器编排实际机器人系统中通常有多个组件需要协同运行比如感知节点、规划节点、控制节点等。Docker Compose可以用一个YAML文件定义所有服务一条命令全部启动。配置中关键是设置好容器间的网络通信用networks定义自定义网络容器之间通过服务名互相访问。面试时如果被问到容器编排能说出Compose的基本用法就足够了。给你的建议Docker Compose是多容器编排的标准工具做机器人开发值得学习。先从简单的开始用Compose管理ROS2节点和仿真器。熟悉后再尝试更复杂的场景比如多机器人仿真、CI/CD流水线。GPU加速对仿真很重要。如果你的机器人需要跑Gazebo一定要配置NVIDIA Container Toolkit否则仿真会卡成PPT。数据持久化别忘了配置。容器删除后数据就没了用volume把重要数据保存到宿主机。上一篇第96篇 Docker入门——机器人开发环境的隔离与复现下一篇预告第98篇 Git基础——add/commit/push/branch的正确使用姿势

相关新闻

相关新闻

【RT-DETR涨点改进】TGRS 2026 | 卷积创新改进篇 | 引入 3DSBE 三维光谱瓶颈增强模块,增强模型对通道间互补信息的利用能力,助力高光谱目标检测、遥感目标检测任务,有效涨点

【RT-DETR涨点改进】TGRS 2026 | 卷积创新改进篇 | 引入 3DSBE 三维光谱瓶颈增强模块,增强模型对通道间互补信息的利用能力,助力高光谱目标检测、遥感目标检测任务,有效涨点

一、本文介绍 🔥本文给大家介绍使用 3DSBE 三维光谱瓶颈增强模块 改进RT-DETR网络模型,主要作用是在特征提取阶段强化不同通道或波段之间的相关性,减少冗余信息,并为后续多尺度融合提供更具判别力的特征表示。该模块通过空间下采样与通道扩展降低计算负担,再采用主、辅双…

2026/7/23 21:50:45
为什么你的AI自动化项目卡在85%?资深架构师亲授“最后一公里”攻坚清单

为什么你的AI自动化项目卡在85%?资深架构师亲授“最后一公里”攻坚清单

更多请点击: https://kaifayun.com 第一章:为什么你的AI自动化项目卡在85%? 当模型在验证集上稳定达到84.7%–85.3%准确率却再难提升时,问题往往不在算法本身,而在于数据闭环的断裂与工程化落地的盲区。大量团队将精力…

2026/7/23 21:50:45
AgentLock 首跑不要先测“能否拦截”:先验证 ALLOW、DENY、DEFER 与版本边界

AgentLock 首跑不要先测“能否拦截”:先验证 ALLOW、DENY、DEFER 与版本边界

很多 Agent 安全测试一上来就塞一段提示注入,然后看工具有没有被拦住。这个顺序不可靠:如果你没有记录安装的版本、策略文件、上下文来源和最终决策,测试结果无法复现。我在 AgentLock 的首跑里先做四件事。第一,分清证据版本。Do…

2026/7/23 21:50:45

最新新闻

OpenHarmony 小鸿 AI 开发实战 02:从板级源码读懂 WS63、CI1302、ST7789 与外部 Flash

OpenHarmony 小鸿 AI 开发实战 02:从板级源码读懂 WS63、CI1302、ST7789 与外部 Flash

第 01 篇已经确认当前小鸿本体走的是 xiaohong 这条 WS63/OpenHarmony 主线。继续开发之前,还要把板级源码中的引脚、总线和器件职责理清,否则很容易把一个 GPIO 当成普通按键、把两类 Flash 混成同一存储空间,或者在 LCD 与外部 Flash 共享 …

2026/7/23 22:35:48
企业级NAS建设方案

企业级NAS建设方案

一、项目概况 1、 背景与建设初衷 我司目前员工规模在 100 人以内。随着公司业务的快速发展,技术研发、产品运营及日常管理中所产生的内部资产资料急剧增加,企业内部资料的集中管理、权限划分与高效流转需求日益凸显。 为了打破数据孤岛,提升…

2026/7/23 22:35:48
老板必看!AI落地就做这两件事,ROI瞬间翻倍!

老板必看!AI落地就做这两件事,ROI瞬间翻倍!

老板看AI,最关心的应该就是能不能帮我提升效率和降低成本,而不是你做了多少个AI对话,或者弄了多少个skill。 所以营销 Agent 和行政 Agent 的落地,不能从“我们要做一个智能体”开始,而要从一张账单开始:这…

2026/7/23 22:35:48
PCBA贴片加工中影响回流焊接的因素

PCBA贴片加工中影响回流焊接的因素

一、回流焊接基本原理回流焊接是PCBA加工中用于现代电子设备组件焊接的重要工艺方法。其基本原理是通过回流炉的温度曲线控制,将预涂在焊点上的焊膏熔化并回流,从而实现元器件与电路板的牢固连接。回流焊接具有高效、自动化程度高、焊接质量稳定等优点&a…

2026/7/23 22:35:48
计算机毕业设计之基于jsp在线选课系统的设计与实现

计算机毕业设计之基于jsp在线选课系统的设计与实现

随着信息化时代的到来,网络系统都趋向于智能化、系统化,在线选课系统也不例外,但目前国内的有些在线选课仍都使用人工管理,在线选课规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化…

2026/7/23 22:35:48
合上技术文章后,你的脑子里还剩下什么?

合上技术文章后,你的脑子里还剩下什么?

我曾以为能读懂每句话就是理解,直到合上文章后只剩下几个术语。后来,我给技术阅读加了一次三分钟的断电测试。前段时间,我读到一段关于 AI Skills 的分析。 作者从 Push 讲到 Pull,从 Just-in-Time Context 讲到 Progressive Disc…

2026/7/23 22:30:48

月新闻