手把手教你在Docker中部署ROS 2 Humble,告别环境配置噩梦!
本文详细介绍使用Docker快速搭建ROS 2 Humble开发环境的方法。通过5个关键步骤:安装Docker、拉取官方镜像、查看本地镜像、运行测试容器以及挂载数据卷实践,帮助开发者轻松获得隔离、纯净的ROS 2环境。文中包含具体命令示例和测试验证方法,特别解决了本地开发目录映射问题,使机器人开发环境配置变得简单高效。
摘要:还在为ROS 2复杂的本地环境配置而烦恼吗?本文将带你使用Docker快速部署ROS 2 Humble环境,只需5步命令,即可获得一个独立、纯净、可复用的开发环境,轻松开始你的机器人学习之旅!
前言
ROS(Robot Operating System)是机器人开发领域广泛使用的框架,但其环境配置依赖复杂,不同版本间可能存在冲突。Docker容器技术为我们提供了完美的解决方案——它能够创建一个隔离、一致且易于分发的运行环境。本文将详细介绍如何使用Docker来快速搭建ROS 2 Humble的开发环境。
1. 安装Docker
首先,确保你的系统(以Ubuntu为例)已安装Docker。打开终端,执行以下命令:
sudo apt update
sudo apt install docker.io
安装完成后,可以通过 docker --version 验证安装是否成功。建议将当前用户加入docker组,以避免每次使用都需要sudo:
sudo usermod -aG docker $USER
注意:执行此命令后需要注销并重新登录或重启系统才能生效。
2. 拉取ROS 2 Humble镜像
官方提供了现成的ROS 2 Docker镜像。这里我们拉取桌面版Humble镜像,它包含了ROS核心、工具和GUI依赖。
docker pull osrf/ros:humble-desktop
这个命令会从Docker Hub下载镜像。根据网络情况,可能需要一些时间。
3. 查看本地镜像
下载完成后,可以使用以下命令查看本地已存在的Docker镜像,确认osrf/ros:humble-desktop是否在列表中。
docker images

4. 运行一个简单的容器
现在,让我们启动一个简单的交互式容器,快速体验ROS 2环境。
docker run -it osrf/ros:humble-desktop
-it 参数表示以交互模式运行并分配一个伪终端。执行后,你将进入容器内部的bash shell。此时,一个基本的ROS 2环境已经就绪。
5. 生产环境实践:挂载数据卷运行容器
在实际开发中,我们通常需要将宿主机(本地)的代码目录映射到容器内部,这样才能在容器内编辑和运行我们自己的ROS 2项目。这通过 -v 参数挂载数据卷实现。
假设你的本地ROS 2工作空间路径为 ~/projects/ros2_learning,使用以下命令启动容器并挂载目录:
docker run -it -v $(pwd)/ros2_learning:/root/ros2_learning osrf/ros:humble-desktop bash
-v $(pwd)/ros2_learning:/root/ros2_learning:将当前终端所在目录下的ros2_learning文件夹,映射到容器内的/root/ros2_learning路径。- 最后的
bash指定容器启动后运行的命令,即打开一个bash shell。
小贴士:你可以将上述长命令写成一个别名(alias)或shell脚本,方便日后快速启动。
6. 测试ROS 2环境
进入容器后,让我们运行一个经典的发布者-订阅者demo来验证环境是否正常工作。
-
打开第一个终端(运行容器时已进入),启动 talker(发布者):
ros2 run demo_nodes_cpp talker你应该能看到终端开始周期性地发布“Hello World”消息。

-
要测试订阅功能,你需要另开一个终端。首先,获取当前运行容器的ID或名称:
docker ps

- 然后,在新的宿主终端中,执行以下命令进入同一个正在运行的容器:
docker exec -it <容器ID或名称> bash - 在这个新的容器终端里,启动 listener(订阅者):
source /opt/ros/humble/setup.bash ros2 run demo_nodes_py listener

如果一切顺利,你将看到这个终端开始打印接收到的“Hello World”消息。
恭喜你!至此,一个完整的、可用于开发的Docker版ROS 2 Humble环境已经成功搭建并测试通过。
总结
通过Docker部署ROS 2,我们实现了:
- 环境隔离:避免与主机系统或其他ROS版本冲突。
- 快速部署:一行命令即可获得标准环境。
- 易于分享:
Dockerfile或镜像本身可以轻松复制给团队成员。 - 数据持久:通过挂载数据卷,保证开发成果不丢失。
希望这篇教程能帮你绕过环境配置的坑,直接将精力投入到有趣的ROS 2学习和开发中!
Happy Coding & Robotics!期待在评论区看到你的实践反馈。
本文为原创内容,版权归作者所有,转载需注明出处。
标签:#Docker #ROS2 #机器人开发
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)