Ubuntu 20.04 安装Docker及ROS2 Humble容器配置指南

本文详细记录在Ubuntu 20.04系统下安装Docker引擎、配置国内镜像源,以及使用ROS2 Humble镜像创建开发容器的完整流程。适用于机器人开发、SLAM算法部署等场景。


一、Docker引擎安装

1. 系统准备

sudo apt update

作用:更新软件包索引,确保后续安装的依赖项为最新版本

2. 安装基础依赖

sudo apt install -y apt-transport-https ca-certificates curl gnupg software-properties-common

关键组件说明

  • apt-transport-https:支持HTTPS协议传输
  • ca-certificates:SSL证书管理
  • curl:命令行下载工具
  • gnupg:软件包签名验证

3. 配置国内镜像源(阿里云)

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

优势:解决国内访问Docker官方源速度慢的问题

4. 安装Docker引擎

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

核心组件

  • docker-ce:Docker社区版
  • containerd.io:容器运行时接口

5. 配置用户权限

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

效果:当前用户加入docker组,免sudo执行docker命令

6. 配置镜像加速器

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://<你的阿里云加速地址>.mirror.aliyuncs.com"]
}
EOF
sudo systemctl restart docker

注意:需前往阿里云容器镜像服务获取专属加速地址,也可自行搜索目前国内可用Docker镜像源来替换这里

7. 验证Docker安装

docker run hello-world

作用:测试Docker是否正常运行,成功会显示Hello from Docker!,就算没有提前拉取Hello-world,也会自动拉取


二、ROS2 Humble镜像部署

1. 拉取官方镜像

docker pull osrf/ros:humble-desktop-full

镜像特点

  • 官方维护,更新及时
  • 包含完整的GUI桌面环境
  • 镜像大小约4.5GB

2. 验证镜像下载

docker images | grep humble

预期输出

osrf/ros   humble-desktop-full   xxxxxx   2 weeks ago   4.5GB

三、容器创建与配置

1. 启动交互式容器

docker run -it --name your_container \
  --network=host \
  --privileged \
  -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v /dev:/dev \
  -v /home/shen/Docker/dlio_ws:/root/dlio_ws \
  osrf/ros:humble-desktop-full

2. 关键参数解析

-it:开启交互模式
--name:为容器命名方便管理
--network=host:容器和主机共享网口数据,因为我的雷达数据要通过网口进行传输
--privileged:授予设备访问权限(如USB摄像头/LiDAR)
-e DISPLAY=$DISPLAY:共享X11图形界面
-v /tmp/.X11-unix:/tmp/.X11-unix:X11套接字映射
-v /dev:/dev:挂载主机设备目录(传感器访问)
-v /home/shen/Docker/dlio_ws:/root/dlio_ws:将容器内的文件夹挂在到主机中,用户可以在主机内进行编辑,二者内容同步,:前为主机目录,:后为容器内部目录
osrf/ros:humble-desktop-full:创建这个容器所使用的镜像

3. 环境验证

# 配置ROS环境
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

# 启动测试节点
ros2 run turtlesim turtlesim_node

成功标志:显示小海龟仿真界面


四、常见问题解决方案

1. X11显示异常

# 在主机终端执行
xhost +local:root

原理:允许容器程序访问X11显示服务

2. 网络设备不可见

# 容器内执行网络测试
ip addr show eth0
ping 192.168.1.100

排查要点

  1. 确认使用--network=host参数
  2. 检查主机防火墙设置

3. 容器配置更新

# 删除旧容器(保留数据卷)
docker stop dlio_container
docker rm dlio_container

# 重新创建容器(复用挂载目录)
docker run ...(保持相同卷参数)

最佳实践建议

  1. 使用docker compose管理复杂容器配置
  2. 定期执行docker system prune清理无用镜像
  3. 重要数据使用独立数据卷(volume)存储
  4. 容器开发环境与生产环境分离

通过本方案,可实现ROS2开发环境的快速部署与硬件无缝对接,特别适用于需要连接激光雷达、IMU等外设的机器人开发场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值