1️⃣ Docker 是什么?

Docker 是一个开源的应用容器引擎,它能把应用程序和依赖包打包到一个轻量级、可移植的容器中,然后发布到任何 Linux 机器上运行。

为什么用 Docker?

  • 容器间相互隔离(像 iPhone 的 App 一样)
  • 启动快、资源占用低
  • 环境一致性,避免 "我电脑上能跑" 问题

官方网站:

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

💡 实用小贴士

  1. 镜像分层原理:Docker 镜像像洋葱一样分层构建,每层都可以被复用,节省存储空间
  2. 容器与虚拟机区别:容器共享主机内核,启动快、资源占用低;虚拟机则是完整操作系统
  3. 最佳实践:一个容器只运行一个应用,通过 Docker Compose 编排多个容器
  4. 避免每次 sudo:将用户加入 docker 组后记得重启系统

需要我帮你制作一份Docker 常用命令速查表吗?这样你在学习过程中可以随时查看,不用翻笔记!

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐