【智能系统项目开发与学习记录】Docker 基础
1️⃣ Docker 是什么?
Docker 是一个开源的应用容器引擎,它能把应用程序和依赖包打包到一个轻量级、可移植的容器中,然后发布到任何 Linux 机器上运行。
为什么用 Docker?
- 容器间相互隔离(像 iPhone 的 App 一样)
- 启动快、资源占用低
- 环境一致性,避免 "我电脑上能跑" 问题
官方网站:
- Docker 官网
- Docker Hub 仓库
2️⃣ 在 Ubuntu 22.04 上安装 Docker
# 1. 更新软件包列表
sudo apt update# 2. 安装依赖工具
sudo apt install -y ca-certificates curl gnupg# 3. 创建密钥存储目录
sudo install -m 0755 -d /etc/apt/keyrings# 4. 下载Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg# 5. 添加密钥读取权限
sudo chmod a+r /etc/apt/keyrings/docker.gpg# 6. 添加Docker软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 7. 再次更新包列表
sudo apt update# 8. 安装Docker核心组件
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 9. 创建docker用户组
sudo groupadd docker# 10. 将当前用户加入docker组
sudo usermod -aG docker $USER# 11. 重启系统使权限生效
sudo reboot
验证安装:
# 查看Docker版本
docker version# 运行测试容器
docker run hello-world
看到 "Hello from Docker!" 就说明安装成功啦!🎉
3️⃣ Docker 基础操作
镜像操作
# 查看本地镜像
docker images# 搜索镜像
docker search 镜像名# 下载镜像
docker pull 镜像名:标签# 删除镜像
docker rmi 镜像ID或名称
容器操作
# 从镜像创建并启动容器
docker run -it --name 容器名 镜像名 /bin/bash# 列出正在运行的容器
docker ps# 列出所有容器(包括已停止)
docker ps -a# 启动/停止/重启容器
docker start 容器名或ID
docker stop 容器名或ID
docker restart 容器名或ID# 删除容器
docker rm 容器名或ID
容器交互
# 进入已运行的容器(推荐方式)
docker exec -it 容器名或ID /bin/bash# 退出容器但不关闭
按 Ctrl+P+Q# 退出并关闭容器
输入 exit
4️⃣ 制作和发布自己的镜像
方法 1:从容器提交
# 提交容器为新镜像
docker commit -m "描述信息" -a "作者" 容器ID 新镜像名:标签
方法 2:使用 Dockerfile (推荐)
# 1. 创建Dockerfile文件
vim Dockerfile# 2. 编写Dockerfile内容(示例)
FROM debian:latest
MAINTAINER YourName "youremail@example.com"
RUN apt update && apt install -y nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]# 3. 构建镜像
docker build -t 镜像名:标签 .
发布到 Docker Hub
# 1. 登录Docker Hub
docker login -u 你的用户名# 2. 为镜像打标签
docker tag 镜像ID 你的用户名/镜像名:标签# 3. 推送镜像
docker push 你的用户名/镜像名:标签
5️⃣ 数据管理与硬件交互
文件拷贝
# 从容器复制到主机
docker cp 容器ID:容器内路径 主机路径# 从主机复制到容器
docker cp 主机文件路径 容器ID:容器内路径
数据卷 (持久化存储)
# 创建数据卷
docker volume create 卷名# 运行容器并挂载数据卷
docker run -it -v 卷名:/容器内路径 镜像名# 挂载主机目录
docker run -it -v /主机绝对路径:/容器内路径 镜像名
硬件设备挂载
# 挂载USB摄像头
docker run -it --device=/dev/video0 镜像名
6️⃣ 容器图形界面 (GUI)
# 1. 在主机安装X Server工具
sudo apt install -y x11-xserver-utils# 2. 允许所有用户访问X Server
xhost +# 3. 启动带GUI支持的容器
docker run -it --env="DISPLAY" -v /tmp/.X11-unix:/tmp/.X11-unix 镜像名
7️⃣ 容器日常管理
# 清理停止的容器
docker container prune# 清理无用镜像
docker image prune# 查看容器实时性能
docker stats 容器ID# 查看容器日志
docker logs 容器ID# 查看容器IP地址
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器ID
8️⃣ 在 Docker 中安装 ROS
ROS1 (Melodic)
# 1. 下载ROS镜像
docker pull ros:melodic# 2. 创建并运行容器
docker run -it --network=host -d -v /tmp/.X11-unix:/tmp/.X11-unix --name melodic -e DISPLAY=$DISPLAY ros:melodic# 3. 进入容器
docker exec -it melodic /bin/bash# 4. 安装ROS桌面完整版
apt update && apt install -y ros-melodic-desktop-full# 5. 测试ROS
source /opt/ros/melodic/setup.bash
rosrun turtlesim turtlesim_node
ROS2 (Humble)
# 1. 下载ROS2镜像
docker pull ros:humble# 2. 创建并运行容器
docker run -it --network=host -d -v /tmp/.X11-unix:/tmp/.X11-unix --name humble -e DISPLAY=$DISPLAY ros:humble# 3. 进入容器
docker exec -it humble /bin/bash# 4. 安装ROS2桌面完整版
apt update && apt install -y ros-humble-desktop-full# 5. 测试ROS2
source /opt/ros/humble/setup.bash
ros2 run turtlesim turtlesim_node
💡 实用小贴士
- 镜像分层原理:Docker 镜像像洋葱一样分层构建,每层都可以被复用,节省存储空间
- 容器与虚拟机区别:容器共享主机内核,启动快、资源占用低;虚拟机则是完整操作系统
- 最佳实践:一个容器只运行一个应用,通过 Docker Compose 编排多个容器
- 避免每次 sudo:将用户加入 docker 组后记得重启系统
需要我帮你制作一份Docker 常用命令速查表吗?这样你在学习过程中可以随时查看,不用翻笔记!