Ubuntu 22.04 Docker 完整使用手册

目录

  1. Docker 概述
  2. 环境准备
  3. Docker 安装
  4. Docker 基础配置
  5. Docker 核心概念
  6. 镜像管理
  7. 容器管理
  8. 数据卷管理
  9. 网络管理
  10. Dockerfile 编写指南
  11. Docker Compose
  12. Docker 仓库与镜像仓库
  13. 容器监控与日志
  14. 安全最佳实践
  15. 性能优化
  16. 常见问题与故障排除
  17. 附录:常用命令速查

1. Docker 概述

1.1 什么是 Docker

Docker 是一个开源的容器化平台,用于开发、交付和运行应用程序。它通过操作系统级虚拟化技术(容器)来打包软件及其所有依赖项,确保应用在任何环境中都能一致地运行。

1.2 容器 vs 虚拟机

特性 容器 (Docker) 虚拟机 (VM)
启动时间 毫秒级 分钟级
内核 共享宿主机内核 独立内核
镜像大小 MB ~ GB GB ~ TB
性能 接近原生 有一定损耗
资源利用率 较低
隔离性 进程级隔离 完全隔离

1.3 Docker 架构

Docker 采用 C/S 架构,包含以下核心组件:

  • Docker Daemon (dockerd):后台守护进程,管理 Docker 对象(镜像、容器、网络、数据卷)
  • Docker Client (docker CLI):命令行工具,与 Docker Daemon 通信
  • Docker Registry:镜像仓库,如 Docker Hub
  • Docker Objects:镜像、容器、网络、数据卷等
  • containerd:底层的容器运行时,负责容器的生命周期管理
  • runc:OCI 兼容的容器运行时,负责创建和运行容器

2. 环境准备

2.1 系统要求

  • Ubuntu 22.04 LTS(任何变体均可:Server、Desktop)
  • 64 位操作系统(x86_64 / amd64 或 arm64)
  • Linux 内核版本 3.10 或更高(推荐 5.x+)
  • 至少 2GB RAM(推荐 4GB+)
  • 至少 20GB 可用磁盘空间

2.2 检查系统版本

# 检查 Ubuntu 版本
lsb_release -a

# 或查看发行版信息文件
cat /etc/os-release

# 检查内核版本
uname -r

# 检查系统架构
uname -m

2.3 卸载旧版本(如果存在)

如果系统中存在旧版本的 Docker(如 docker.iodocker-engine),需要先卸载:

# 卸载旧版本 Docker
sudo apt-get remove -y docker docker-engine docker.io containerd runc

# 注意:/var/lib/docker/ 目录中的镜像、容器、卷、网络等数据会保留
# 如需完全清理旧数据(谨慎!会丢失所有 Docker 数据):
# sudo rm -rf /var/lib/docker/
# sudo rm -rf /var/lib/containerd/

3. Docker 安装

3.1 方法一:使用官方脚本自动安装(推荐)

这是最简单快捷的方式,适用于大多数场景:

# 步骤 1:下载并执行 Docker 官方安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 如果 curl 未安装,先安装 curl
sudo apt-get update && sudo apt-get install -y curl

3.2 方法二:使用 apt 仓库安装(推荐生产环境)

这种方式便于后续用 apt 管理 Docker 的升级。

步骤 1:更新包索引并安装依赖
sudo apt-get update

sudo apt-get install -y \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
步骤 2:添加 Docker 官方 GPG 密钥
# 创建密钥存储目录
sudo install -m 0755 -d /etc/apt/keyrings

# 下载并添加 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
    sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 设置密钥文件权限
sudo chmod a+r /etc/apt/keyrings/docker.gpg
步骤 3:设置 Docker APT 仓库
# 将 Docker 仓库添加到 apt 源
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

说明$(dpkg --print-architecture) 自动检测系统架构(amd64/arm64),$(lsb_release -cs) 自动检测 Ubuntu 发行版代号(如 jammy)。

步骤 4:安装 Docker Engine
# 更新包索引(此时会从新添加的 Docker 仓库拉取信息)
sudo apt-get update

# 安装 Docker Engine、CLI、containerd 和 Docker Compose 插件
sudo apt-get install -y \
    docker-ce \
    docker-ce-cli \
    containerd.io \
    docker-buildx-plugin \
    docker-compose-plugin

3.3 验证安装

# 检查 Docker 版本
sudo docker version

# 检查 Docker 系统信息
sudo docker info

# 运行 hello-world 测试容器
sudo docker run hello-world

如果看到 “Hello from Docker!” 信息,说明安装成功。

3.4 安装 Docker Compose

在 Ubuntu 22.04 中,如果在安装 Docker 时一并安装了 docker-compose-plugin,则可以直接使用 docker compose 命令(注意是子命令形式)。

如果需要独立的 docker-compose 二进制文件:

# 方法 1:使用 apt 安装(版本可能较旧,不推荐)
sudo apt-get install -y docker-compose

# 方法 2:从 GitHub 下载最新版(推荐)
# 首先查看最新版本:https://github.com/docker/compose/releases
DOCKER_COMPOSE_VERSION="v2.27.0"
sudo curl -L \
    "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
    -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version

4. Docker 基础配置

4.1 将普通用户加入 docker 组(免 sudo 运行)

默认情况下,运行 Docker 命令需要 sudo 权限。将用户加入 docker 组后可以免 sudo 执行:

# 创建 docker 组(通常安装时已创建)
sudo groupadd docker

# 将当前用户加入 docker 组
sudo usermod -aG docker $USER

# 将指定用户加入 docker 组
# sudo usermod -aG docker username

# 使组变更生效(二选一)
# 选项 A:重新登录(注销当前会话后重新登录)
# 选项 B:激活对组的更改(无需注销)
newgrp docker

# 验证是否生效(无需 sudo)
docker run hello-world

安全警告docker 组的用户拥有相当于 root 的权限。将用户加入 docker 组等于授予其无密码的 root 权限。生产环境中请谨慎管理。

4.2 配置 Docker 开机自启

# 启用 Docker 开机自动启动
sudo systemctl enable docker.service
sudo systemctl enable containerd.service

# 立即启动 Docker 服务
sudo systemctl start docker.service

# 查看 Docker 服务状态
sudo systemctl status docker.service

# 重启 Docker 服务
sudo systemctl restart docker.service

# 停止 Docker 服务
sudo systemctl stop docker.service

# 禁用 Docker 开机自启
sudo systemctl disable docker.service

4.3 Docker Daemon 配置文件

Docker Daemon 的配置文件位于 /etc/docker/daemon.json。如果文件不存在,可以手动创建。

# 创建或编辑 daemon.json
sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json

常用配置项示例:

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com",
    "https://mirror.ccs.tencentyun.com"
  ],
  "data-root": "/var/lib/docker",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "exec-opts": ["native.cgroupdriver=systemd"],
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ],
  "insecure-registries": [],
  "live-restore": true,
  "max-concurrent-downloads": 10,
  "max-concurrent-uploads": 5,
  "default-ulimits": {
    "nofile": {
      "Name": "nofile",
      "Hard": 65535,
      "Soft": 65535
    }
  }
}

配置说明:

配置项 说明 默认值
registry-mirrors 镜像加速器地址列表 []
data-root Docker 数据存储目录 /var/lib/docker
log-driver 日志驱动类型 json-file
log-opts.max-size 单个日志文件最大大小 -
log-opts.max-file 最多保留的日志文件数 -
exec-opts 运行时选项(建议使用 systemd cgroup 驱动) -
storage-driver 存储驱动(推荐 overlay2) overlay2
live-restore Daemon 重启时保持容器运行 false
max-concurrent-downloads 最大并行下载数 3
max-concurrent-uploads 最大并行上传数 5

修改配置后重启 Docker 服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

4.4 配置镜像加速器

由于网络原因,从 Docker Hub 拉取镜像可能很慢。配置国内镜像加速器可以显著提升速度。

/etc/docker/daemon.json 中配置:

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com",
    "https://docker.nju.edu.cn",
    "https://mirror.ccs.tencentyun.com"
  ]
}

常用国内镜像加速器:

镜像加速器 地址
DaoCloud https://docker.m.daocloud.io
南京大学 https://docker.nju.edu.cn
Docker Proxy https://dockerproxy.com
腾讯云 https://mirror.ccs.tencentyun.com
阿里云(需注册) https://<your-code>.mirror.aliyuncs.com

配置完成后重启 Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

# 验证镜像加速器是否生效
docker info | grep -A 5 "Registry Mirrors"

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐