先定义容器边界
容器用于固定软件环境,不应隐藏硬件依赖。需要明确设备、网络、图形界面和实时性要求,再决定哪些节点进入容器。
- 算法和工具节点适合优先容器化。
- 设备节点需要显式声明串口、USB 或 GPU 访问。
- 需要低延迟通信时,先验证 DDS 与宿主网络模式。
最小镜像结构
FROM ros:jazzy-ros-base
WORKDIR /robot_ws
COPY src ./src
RUN . /opt/ros/jazzy/setup.sh && \
rosdep install --from-paths src -yi && \
colcon build --merge-install
CMD ["bash", "-lc", "source install/setup.bash && ros2 launch robot_bringup system.launch.py"]运行时约定
镜像保持只读,参数、日志和数据通过挂载进入。机器人型号、ROS_DOMAIN_ID 和运行模式使用明确环境变量配置。