第1课 & 第2课:跑通第一个 Docker (热身)

目标:确认Docker安装正常,拉取并运行测试镜像。

1. 检查你的树莓派是否已经装了Docker(通常装ROS的系统自带了):

docker version

(如果有输出Client和Server的版本号,说明已经装好了,直接跳到第2步)

2. 运行 Hello World 测试:

docker run hello-world

(这行代码会自动去网上下载一个很小的测试包并运行,如果看到 Hello from Docker! 就说明一切正常)

3. 查看你现在下载了哪些镜像(安装包):

docker images

第3课:容器的日常操作 (核心基础)

目标:学会怎么下载系统、进入系统、退出系统。

1. 下载一个纯净的 Debian 操作系统镜像:

docker pull debian

2. 启动并进入这个 Debian 系统(进入容器):

docker run -it debian /bin/bash

(敲完这行,你会发现你的终端前缀变成了 root@xxxxxx:/#,说明你已经在一个完全隔离的全新系统里了!)

3. 退出容器:

  • 彻底退出并关机:直接输入 exit 然后回车。
  • 退出但让它在后台保持运行(常用!):按下键盘上的 Ctrl + P,然后再按 Ctrl + Q

4. 查看正在运行的容器:

docker ps

(加 -a 可以看所有曾经运行过的:docker ps -a)

5. 重新进入后台运行的容器(假设上面查到的容器ID是 efe9):

docker exec -it efe9 /bin/bash

6. 删除不需要的容器(彻底清理):

docker rm -f efe9

第4课:制作你自己的镜像 (打包保存)

目标:你在容器里装了软件,怎么把它保存下来?

方法一:从现有容器保存 (类似系统备份)

  1. 先看一眼你的容器ID:docker ps -a (假设ID是 9aeb
  2. 把它打包成新镜像:
docker commit 9aeb my_debian:1.0
  1. 检查一下有没有保存成功:docker images

方法二:用代码自动构建 (Dockerfile - 进阶高手玩法)

  1. 创建一个构建文件:
nano Dockerfile
  1. 复制下面两行代码进去(意思是基于debian,并更新一下软件源),按 Ctrl+O 保存,Ctrl+X 退出:
FROM debian
RUN apt-get update
  1. 开始自动构建镜像(注意最后面有个小点 .):
docker build -f Dockerfile -t my_debian:1.1 .

第5课:跟硬件打交道 (ROS机器人必备!)

目标:让容器能看到USB设备、能显示图形界面、能互传文件。

1. 挂载摄像头进容器 (--device):

docker run -it --device=/dev/video0 debian /bin/bash

(进容器后输入 ls /dev,就能看到 video0 被弄进去了)

2. 挂载你的 ROS 工作空间进容器 (数据卷 -v - 超级重要!):

docker run -it -v /home/ubuntu/puppyfit_ws:/root/puppyfit_ws debian /bin/bash

(这样你在树莓派上写的代码,容器里 /root/puppyfit_ws 马上就能看到!删了容器代码也不会丢)

3. 和容器互传文件 (docker cp):
不用进容器,直接在树莓派终端敲:

# 从容器拷出来 (把容器 9aeb 里的文件拷到当前目录)
docker cp 9aeb:/root/test.txt ./

# 拷进容器里
docker cp my_code.py 9aeb:/root/

第6课:清理垃圾

目标:用久了硬盘满了怎么办?

1. 一键清理所有已经停止的废弃容器:

docker container prune

2. 一键清理所有没用的悬空镜像:

docker image prune

3. 查看当前容器占了多少CPU和内存:

docker stats

第7课:在 Docker 里跑 ROS2

目标:一键搞定 ROS2 Humble 环境,并弹出图形界面。

1. 在树莓派上允许图形界面弹出:

xhost +

2. 启动一个包含 ROS2 的超级容器:
(这条命令很长,包含了网络共享、设备挂载、图形界面映射)

docker run -it --network=host -d -v /dev:/dev -v /tmp/.X11-unix:/tmp/.X11-unix --name my_ros2 -e DISPLAY=$DISPLAY --restart=always ros:humble /bin/bash

3. 进入这个 ROS2 容器:

docker exec -it my_ros2 /bin/bash

4. 在容器里测试小海龟(弹出GUI):

source /opt/ros/humble/setup.bash
ros2 run turtlesim turtlesim_node

第8课:镜像的导入导出 (分享给别人)

目标:没网的时候,怎么把配置好的环境通过 U盘 拷给别人?

1. 把镜像打包成一个压缩包 (tar 文件):

# 把你做好的 my_debian:1.0 打包
docker save -o my_debian.tar my_debian:1.0

2. 别人拿到 U盘后,怎么导入这个镜像:

docker load -i my_debian.tar

这份文档非常全面!它包含了从 “Docker零基础”“在Docker里跑ROS2并驱动硬件” 的完整学习路线。

既然你正在使用树莓派开发ROS2(你的 puppyfit_ws 工作空间),学好Docker将是你的超级武器!它可以帮你把ROS环境打包,再也不怕把树莓派的系统环境搞崩溃了。

这8节课的内容很多,如果死记硬背会非常枯燥。我为你把这8节课浓缩成了4个实战阶段。我们不需要一次性学完,我先带你理清核心逻辑,然后我们一步步实操。


核心概念:一分钟理解Docker (对应第1课)

你可以把Docker想象成货轮上的集装箱

  • 镜像 (Image):相当于“安装光盘”或“系统包”。比如 ros:humble 就是一个装好了ROS2的Ubuntu系统包。它是只读的。
  • 容器 (Container):相当于用“安装光盘”运行起来的“虚拟机”。你可以在里面敲代码、跑节点。容器关机后,里面的数据如果没有保存就会丢失。
  • 仓库 (Repository):相当于应用商店(Docker Hub),你可以去上面下载别人做好的镜像。

实战学习路线:我们分四步打通!

第一步:Docker 生存指南(对应 第2、3课)

这是你每天都会用到的基础命令,把它当成九阴真经背下来:

  • 看本地有什么镜像docker images
  • 看正在运行的容器docker ps (加 -a 查看所有曾经运行过的)
  • 拉取一个新系统docker pull debian
  • 启动并进入容器docker run -it debian /bin/bash (相当于开机并进入命令行)
  • 退出容器:输入 exit(容器会关机),或者按 Ctrl+P+Q(容器保持后台运行,只退出界面)。
  • 重新进入后台运行的容器docker exec -it <容器ID> /bin/bash
第二步:打造你自己的环境(对应 第4、8课)

假设你在官方的 debian 镜像里装了 Python 和 ROS,你想把它保存下来,以后直接用。

  • 手动保存 (Commit)docker commit <容器ID> my_ros:v1 (把现在的容器打包成一个新的镜像)。
  • 代码化保存 (Dockerfile):写一个文本文件告诉Docker怎么一步步安装,用 docker build 生成镜像(这是最高阶、最正规的玩法)。
  • 打包带走:用 docker save 把镜像变成一个 .tar 压缩包,用U盘拷给你的同学,他用 docker load 就能拥有和你一模一样的环境!
第三步:打通物理世界(对应 第5课)—— 做机器人的关键!

容器就像一个铁盒,默认是看不见树莓派的硬件和文件的。我们需要“打洞”:

  1. 传文件进铁盒 (数据卷 Volume)
    使用 -v 参数。比如 -v /home/ubuntu/puppyfit_ws:/root/ws
    作用:把你的树莓派代码目录,直接映射到容器里。你在树莓派上改代码,容器里立刻生效!再也不怕容器被删导致代码丢失了。
  2. 接硬件进铁盒 (挂载设备)
    使用 --device 参数。比如 --device=/dev/video0
    作用:让容器能读取到树莓派上插的USB摄像头或激光雷达。
  3. 让铁盒能显示图形界面 (GUI显示)
    用到 xhost +-e DISPLAY=${DISPLAY} 等长长的一串命令。
    作用:让你在Docker里面跑小海龟(turtlesim)时,画面能弹到你的树莓派桌面上。
第四步:在 Docker 里玩转 ROS2(对应 第7课)

这就是文档里最激动人心的一步,利用前面的所有知识,在树莓派启动一个完全隔离的ROS2容器。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐