跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / BashAI

Ubuntu 下使用 Docker 安装任意版本 ROS 及一键启动教程

在 Ubuntu 系统下利用 Docker 容器技术安装任意版本 ROS,实现多版本隔离与共存。教程涵盖 Docker 环境搭建、国内镜像源配置方法、ROS 镜像拉取、容器创建参数详解(含 GPU 支持、X11 图形界面转发、权限设置),并提供一键启动脚本方案简化日常操作。重点解决网络超时、用户权限及图形界面显示问题,确保 ROS 功能正常运行。

邪神洛基发布于 2026/2/7更新于 2026/7/208.8K 浏览
Ubuntu 下使用 Docker 安装任意版本 ROS 及一键启动教程

前言

通过 Docker 安装 ROS 可以无视系统版本支持的限制(例如 Ubuntu 22.04 默认只支持 ROS2,不支持 ROS1),并能实现多个 ROS 版本的共存与隔离。

本教程将详细介绍如何通过 Docker 安装 ROS,并对关键参数进行说明。建议先了解 Docker 的基本使用方法。

一、安装 Docker

建议使用官方或社区提供的脚本安装 Docker,注意确保安装了 Docker 显卡驱动,以便在容器中使用 GPU。

二、拉取 ROS 镜像

sudo docker pull osrf/ros:noetic-desktop-full

本教程以 ROS Noetic 版本为例,其他版本需更换对应的镜像名称。ROS 镜像命名通常为 osrf/ros:版本号-desktop-full。

常用版本示例:

  • osrf/ros:melodic-desktop - ROS Melodic 桌面全功能版
  • osrf/ros:kinetic-desktop - ROS Kinetic 桌面全功能版
  • osrf/ros:humble-desktop - ROS2 Humble 桌面全功能版
  • osrf/ros:foxy-desktop - ROS2 Foxy 桌面全功能版

镜像源配置

若拉取镜像失败(如连接超时),可能需要更换国内镜像源。

方式一:使用换源脚本
bash <(wget -qO- https://xuanyuan.cloud/docker.sh)
方式二:修改配置文件
  1. 编辑配置文件:
sudo nano /etc/docker/daemon.json
  1. 添加镜像源(请替换为可用的镜像地址):
{
  "registry-mirrors": [
    "https://xxxxx.cn",
    "https://xxxxx.cn"
  ]
}
  1. 重启 Docker:
systemctl restart docker

三、创建 ROS 容器

3.1 使用 docker run 创建

sudo docker run -dit \
--gpus all \
-e NVIDIA_DRIVER_CAPABILITIES=all \
--name=<your_name> \
-v /dev:/dev \
-v /home/<your_username>:/home/<your_username> \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=unix$DISPLAY \
-w /home/<your_username> \
osrf/ros:noetic-desktop-full

参数说明:

  • -dit:后台运行并分配伪终端。
  • --gpus all:分配所有可用 GPU 硬件。
  • -e NVIDIA_DRIVER_CAPABILITIES=all:允许容器使用所有 NVIDIA 驱动功能。
  • --name:指定容器名称。
  • -v /dev:/dev:挂载宿主机设备目录,解决 USB 等设备挂载问题。
  • -v /home/...:挂载用户目录,方便文件访问。
  • -v /tmp/.X11-unix:挂载 X11 sockets,支持图形界面显示。
  • -e DISPLAY:设置显示环境变量。
  • -w:设置工作目录。
  • osrf/ros:...:镜像名称。

可选参数:

  • --privileged:给予容器 root 权限(存在安全风险,实验环境慎用)。
  • --net=host:使用宿主机网络模式。
  • --restart:设置容器重启策略(no, on-failure, always 等)。

四、使用容器

4.1 权限配置

默认情况下需要 sudo 权限运行 Docker。可将当前用户加入 docker 组以免 sudo:

sudo gpasswd -a $USER docker
newgrp docker

4.2 启动与进入

配置 X11 访问权限

容器内打开 Gazebo 等可视化程序需要访问宿主机的 X11 服务器:

# 允许所有本地连接访问
xhost +local:
# 或仅允许 docker 访问
xhost +local:docker
启动与进入容器
# 启动
sudo docker start <container_name>
# 进入
sudo docker exec -it <container_name> /bin/bash
配置 ROS 环境

每次进入终端需 source ROS 路径,建议写入 .bashrc:

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

测试运行:

roscore

4.3 一键启动脚本

为方便管理,可创建启动脚本。

  1. 创建目录:
cd ~/.docker/setup
  1. 创建脚本文件(内容如下):
#!/bin/bash
xhost +local:docker
echo "请输入指令控制<your_name>容器:启动 (s) 重启 (r) 进入 (e) 关闭 (c):"
read choose
case $choose in
  s) docker start <your_name>;;
  r) docker restart <your_name>;;
  e) docker exec -it <your_name> /bin/bash;;
  c) docker stop <your_name>;;
esac
newgrp docker
  1. 赋予执行权限:
sudo chmod +x <script_name>
  1. 添加到 PATH:
echo 'export PATH=$PATH:/home/<your_username>/.docker/setup' >> ~/.bashrc
source ~/.bashrc

此后在任意终端输入容器名即可操作。进入容器后记得更新源:

sudo apt-get update

注意事项:

  • 脚本中的 <your_name> 需替换为实际容器名。
  • 确保用户已加入 docker 组。
  • 图形界面转发命令效果通常是临时的,重启 X11 服务后可能失效。

目录

  1. 前言
  2. 一、安装 Docker
  3. 二、拉取 ROS 镜像
  4. 镜像源配置
  5. 方式一:使用换源脚本
  6. 方式二:修改配置文件
  7. 三、创建 ROS 容器
  8. 3.1 使用 docker run 创建
  9. 四、使用容器
  10. 4.1 权限配置
  11. 4.2 启动与进入
  12. 配置 X11 访问权限
  13. 允许所有本地连接访问
  14. 或仅允许 docker 访问
  15. 启动与进入容器
  16. 启动
  17. 进入
  18. 配置 ROS 环境
  19. 4.3 一键启动脚本
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Java Web 开发环境搭建:IDEA 与 Tomcat 安装部署指南
  • Spring Boot 整合 RocketMQ 避坑指南:Tag 与 selectorExpression 配置误区
  • Quartus Prime Lite 23.1 与 ModelSim 18.1 安装及联调指南
  • 基于向量引擎的多模型集成与 AI Agent 架构实战
  • Spring Boot 3 + Vue 3 饰品商城系统设计与实现
  • Rust 异步并发安全与内存管理实战指南
  • C++ 引用、内联函数与 C++11 新特性详解
  • C++与Linux基础:文件管理系统与缓冲区实现
  • 配置钉钉 OpenClaw 机器人调用 OpenMetadata
  • Python 标准库与第三方库实战:日期、字符串与 Excel 操作
  • Python 将 CSV 数据导入 Neo4j 的实现方法
  • Python 基础语法详解:数据类型、运算符与控制流
  • 前端日志本地持久化方案
  • WorkBuddy 接入 QQ 机器人配置指南
  • LLM 评估指标详解:如何客观对比 LLaMA-3 与 GPT-4 能力
  • 接口自动化测试入门:基于 Python 与 Requests 实战
  • Rust 重构 Android 蓝牙协议栈:C++ 迁移的安全与效率实践
  • 人工智能、机器学习与深度学习的关系解析
  • AI 产品从概念到市场的阶段
  • LeetCode 3. 无重复字符的最长子串 - HashSet 与 HashMap 滑动窗口解法

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online