Docker
Docker
本文记录在 Ubuntu 24.04 上安装 Docker、配置 Docker Hub 镜像源、允许非 root 用户执行 Docker 命令,以及使用 Docker 运行 ROS 1 镜像的方法。
1. 在 Ubuntu 24.04 上安装 Docker
第 1 步:更新软件包并安装必要软件
更新软件包索引,并安装添加 Docker 仓库所需的前置软件包:
1 | |
第 2 步:导入 Docker 官方 GPG 密钥
使用以下命令下载并导入 Docker 官方 GPG 密钥:
1 | |
第 3 步:添加 Docker 官方仓库
将 Docker 官方仓库添加到 Ubuntu 24.04 LTS 的软件源列表:
1 | |
第 4 步:更新软件包列表
刷新软件包列表,使系统识别刚刚添加的 Docker 仓库:
1 | |
第 5 步:安装 Docker
执行以下命令安装 Docker Engine 及相关组件:
1 | |
安装的组件包括:
docker-ce:Docker Engine。docker-ce-cli:用于与 Docker 守护进程通信的命令行工具。containerd.io:管理容器生命周期的容器运行时。docker-buildx-plugin:增强镜像构建功能的 Docker 扩展,支持多平台构建。docker-compose-plugin:通过 YAML 文件管理多容器 Docker 应用的插件。
第 6 步:检查 Docker 服务状态
1 | |
如果输出 active,说明 Docker 服务正在运行。
第 7 步:运行测试容器
运行 hello-world 测试容器,验证 Docker 是否安装成功:
1 | |
2. 替换 Docker Hub 国内镜像源
如果拉取 Docker Hub 镜像时遇到困难,可以尝试配置国内镜像源。镜像服务的可用性可能发生变化,使用前建议先确认服务状态。
第 1 步:打开配置文件
使用文本编辑器打开 Docker 配置文件;如果文件不存在,保存时会自动创建:
1 | |
第 2 步:编辑配置文件
在配置文件中添加或修改 registry-mirrors。可选地址包括:
- DaoCloud:
https://docker.m.daocloud.io - 百度云镜像站:
https://mirror.baidubce.com - 网易云镜像站:
http://hub-mirror.c.163.com - 南京大学镜像站:
https://docker.nju.edu.cn
配置示例:
1 | |
第 3 步:重启 Docker 服务
保存配置文件,然后重新加载配置并重启 Docker:
1 | |
第 4 步:验证配置
1 | |
在输出中检查 Registry Mirrors,确认镜像源是否生效。
3. 允许非 root 用户运行 Docker 命令
默认情况下,只有 root 用户或具有 sudo 权限的用户才能执行 Docker 命令。如果不加 sudo 直接运行 docker,系统可能会提示权限错误。
运行以下命令,将当前登录用户添加到 docker 用户组:
1 | |
执行后需要退出并重新登录,或者重启系统,新的用户组权限才会生效。
注意:加入
docker用户组相当于授予该用户较高的系统权限,仅应添加可信用户。
4. 卸载 Docker
第 1 步:卸载 Docker 及相关组件
1 | |
第 2 步:删除 Docker 数据
危险操作: 以下命令会永久删除本机所有 Docker 镜像、容器、卷及 containerd 数据。执行前请确认重要数据已经备份。
1 | |
5. Docker 常用命令
查看本地镜像
1 | |

运行容器
1 | |
将 REPOSITORY:TAG 替换为实际的镜像名称和标签。
查看正在运行的容器
1 | |

将容器提交为新镜像
可以使用容器名称:
1 | |
也可以使用容器 ID:
1 | |
导出和导入镜像
将镜像保存为 tar 文件:
1 | |
在其他主机上加载镜像:
1 | |
6. 使用 Docker 运行 ROS 镜像
获取 ROS 1 Docker 镜像
ROS 官方提供了 Docker 镜像,可以直接从 Docker Hub 拉取所需版本,例如 Noetic:
1 | |
启动 Docker 容器
使用以下命令启动容器,并进入交互式 Bash 环境:
1 | |
其中,--rm 表示退出容器后自动删除该容器。需要保留容器时,请去掉这个参数。
如果需要将当前目录挂载到容器的工作目录中,可以执行:
1 | |
配置 ROS 环境
进入容器后,加载 ROS Noetic 环境:
1 | |
为了让配置在每次打开 Bash 时自动生效,可以写入 .bashrc:
1 | |
测试 ROS 1 安装
1 | |
如果 roscore 正常启动,说明 ROS 1 环境已经配置完成。
运行带图形界面的 ROS 工具
如果计划运行 Gazebo、RViz 或其他图形界面工具,需要配置 X11 共享。在宿主机中执行:
1 | |
然后在启动容器时传递显示环境并挂载 X11 socket,例如:
1 | |
使用完成后,可以在宿主机撤销 Docker 的本地 X11 访问权限:
1 | |