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
排查要点:
- 确认使用
--network=host
参数 - 检查主机防火墙设置
3. 容器配置更新
# 删除旧容器(保留数据卷)
docker stop dlio_container
docker rm dlio_container
# 重新创建容器(复用挂载目录)
docker run ...(保持相同卷参数)
最佳实践建议
- 使用
docker compose
管理复杂容器配置 - 定期执行
docker system prune
清理无用镜像 - 重要数据使用独立数据卷(volume)存储
- 容器开发环境与生产环境分离
通过本方案,可实现ROS2开发环境的快速部署与硬件无缝对接,特别适用于需要连接激光雷达、IMU等外设的机器人开发场景。