掘金 人工智能 前天 10:48
使用Docker安装ROS2
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文详细介绍了如何在 Docker 容器中安装和运行 ROS 2 环境,特别是在 Arch Linux 系统上的实践。文章涵盖了 Docker 的基本概念,安装步骤,以及如何拉取、运行 ROS 2 镜像。此外,还提供了挂载本地代码、配置 GUI 显示的方法,并给出了运行小乌龟的完整脚本示例。最后,文章还介绍了如何在容器内开多终端以及使用 VS Code 进行代码编辑,方便开发者进行 ROS 2 开发。

🐳 Docker 就像一个“虚拟环境管理器”,允许用户创建独立的“容器”,每个容器都是一个可以运行的迷你系统,可以安装 ROS、Python 等各种软件。用户可以随时启动、停止或删除容器,且容器与主系统完全隔离。

✅ 安装 Docker 的基本步骤包括在 Arch Linux 上使用 `pacman` 安装 Docker 服务,启用并启动 Docker 服务,以及授权用户使用 Docker。此外,还介绍了如果安装失败,可以尝试更新软件仓库。

🚀 运行 ROS 2 容器的步骤包括拉取 ROS 2 Jazzy 镜像,运行 ROS 2 容器并进入终端,以及挂载本地代码到容器中。文章提供了具体的 Docker 命令,如 `docker pull` 和 `docker run`,以及如何使用 `-v` 参数挂载本地代码。

🐢 为了在 Docker 容器中显示 GUI 界面,需要安装 `xorg-xhost` 软件包,并授权 Docker 访问 X11。文章提供了配置 GUI 显示的命令,以及一个完整的脚本 `run_turtlesim.sh`,用于自动设置图形显示并启动小乌龟。

💡 为了方便开发,文章还介绍了在容器内开多终端的方法,以及如何在 VS Code 中使用 Remote - Containers 插件进行代码编辑,方便开发者在容器内进行 ROS 2 开发。

🐳 Docker 是个啥?

Docker 就像个“虚拟环境管理器”,每个“容器”就是一个可以运行的迷你系统,里边可以装 ROS、Python、网页服务器,啥都行。你可以随时启动、停止、删掉,和你的主系统完全分开。


✅ 第一步:安装 Docker(Arch)

打开终端,输:

sudo pacman -S dockersudo systemctl enable --now dockersudo usermod -aG docker $USER
命令作用
sudo systemctl enable --now docker启用并启动 Docker 服务
sudo usermod -aG docker $USER让当前用户可以不用 sudo 使用 Docker

然后 退出重新登录 或者直接重启(让 docker 权限生效)。

ps:如果安装时失败,可以更新一下软件仓库 sudo pacman -Syy


✅ 第二步:拉 ROS 2 Jazzy 镜像

jazzy 是最新的长期支持版本镜像来源,使用指定的 tag 拉取,下载 jazzy-full,最新的长期支持版的完整包hub.docker.com/r/althack/r…

docker pull althack/ros2:jazzy-full-2025-04-01

这个镜像就是:官方发布的 ROS 2 Jazzy 环境,干净稳定,适合开发。ps:拉取镜像超时,打开 代理 tun 模式 再拉取下载完 运行 docker images 查看镜像


✅ 第三步:运行 ROS 2 容器

现在来跑一个最基本的容器:

docker run -it --rm ros2:jazzy-full-2025-04-01

你会看到进了一个终端,提示符是 root@xxxxx,然后你可以试试:

ros2 --help

说明你已经在容器里跑 ROS 2 了!


✅ 第四步:挂载你自己的代码(更实用)

假设你有个 ROS 2 项目在本地 /home/zhengma/dev_ws,你可以这样挂进去:

docker run -it --rm \\  -v /home/zhengma/dev_ws:/root/dev_ws \\  ros2:jazzy-full-2025-04-01

容器内就能看到 /root/dev_ws,等于把你的项目文件挂进去了。


✅ 第五步:退出容器

只要敲:

exit

容器就关了(因为我们用的是 --rm,自动清理),一点不占资源。


🧙 小魔法(可选)

加一个快捷命令,以后用:

alias ros2jazzy='docker run -it --rm ros:jazzy-ros-base'

然后你只要敲:

ros2jazzy

就能直接进入环境!


Docker 显示GUI界面配置

需要使用 xhost 来显示到屏幕上

在 Arch Linux 上安装 xhost 非常简单,它是 xorg-xhost 软件包的一部分。


✅ 安装命令如下:

sudo pacman -S xorg-xhost

然后授权 Docker 使用 X11:

xhost +si:localuser:root

这条命令告诉 X11:“允许本地的 root 用户(比如你的 Docker 容器)访问图形界面”。


🐢 接下来就可以运行 Docker GUI 了,例如:

docker run -it \\  --env DISPLAY=$DISPLAY \\  --env QT_X11_NO_MITSHM=1 \\  --env QT_QPA_PLATFORM=xcb \\  --volume /tmp/.X11-unix:/tmp/.X11-unix \\  ros:humble

然后在容器里运行:

ros2 run turtlesim turtlesim_node

下面是一个完整的一键脚本,名叫 run_turtlesim.sh,适用于你当前的 Arch Linux + Wayland + Docker 环境,自动设置好图形显示并启动小乌龟:


🐢 run_turtlesim.sh 脚本内容:

#!/bin/bash# 🐧 设置图形显示权限(只需执行一次,但重复执行也没问题)echo "📢 授权 root 用户访问 X11..."xhost +si:localuser:root# 🐳 启动 ROS 2 容器(使用软件渲染)echo "🚀 启动 ROS 2 turtlesim 容器..."docker run -it --rm \\  --env DISPLAY=$DISPLAY \\  --env LIBGL_ALWAYS_SOFTWARE=1 \\  --env QT_X11_NO_MITSHM=1 \\  --env QT_QPA_PLATFORM=xcb \\  --volume /tmp/.X11-unix:/tmp/.X11-unix \\  --name ros2_container \\  -v $(pwd):/root/ros2_ws  althack/ros2:jazzy-full-2025-04-01 \\  # bash -c "ros2 run turtlesim turtlesim_node"

✅ 使用方法:

    保存为脚本文件(比如 run_turtlesim.sh):

    nano run_turtlesim.sh# 粘贴脚本内容,然后 Ctrl+O 保存,Ctrl+X 退出

    加执行权限

   chmod +x run_turtlesim.sh
    运行!
./run_turtlesim.sh

这脚本会自动:


如果你后续想支持 teleop 或用 rviz2rqt,我也可以帮你扩展进去!

开多终端的方法

例如,如果你的容器名字叫做 my_container,那么命令会是这样的:

docker exec -it my_container bash

这将在 my_container 容器中打开一个新的 bash 终端,允许你在其中执行命令和操作。

VS code 中写代码

安装插件-dev-RemoteContainer

用脚本打开镜像容器,挂载文件夹到镜像中(脚本中已经设置)

点击 VS 左下角蓝色连接按钮,选择附加到容器打开|attach 这个选项,选择容器会打开一个新的窗口,在里面可以访问挂载的文件夹 ros2_wsros2\_ws, 修改的代码可以直接同步到本地文件夹

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Docker ROS 2 容器 Arch Linux
相关文章