Ubuntu 22.04 Docker 完整使用手册(1)

Ubuntu 22.04 Docker 完整使用手册

目录

  1. [Docker 概述](#Docker 概述)
  2. 环境准备
  3. [Docker 安装](#Docker 安装)
  4. [Docker 基础配置](#Docker 基础配置)
  5. [Docker 核心概念](#Docker 核心概念)
  6. 镜像管理
  7. 容器管理
  8. 数据卷管理
  9. 网络管理
  10. [Dockerfile 编写指南](#Dockerfile 编写指南)
  11. [Docker Compose](#Docker Compose)
  12. [Docker 仓库与镜像仓库](#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 检查系统版本

bash 复制代码
# 检查 Ubuntu 版本
lsb_release -a

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

# 检查内核版本
uname -r

# 检查系统架构
uname -m

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

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

bash 复制代码
# 卸载旧版本 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 方法一:使用官方脚本自动安装(推荐)

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

bash 复制代码
# 步骤 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:更新包索引并安装依赖
bash 复制代码
sudo apt-get update

sudo apt-get install -y \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
步骤 2:添加 Docker 官方 GPG 密钥
bash 复制代码
# 创建密钥存储目录
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 仓库
bash 复制代码
# 将 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
bash 复制代码
# 更新包索引(此时会从新添加的 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 验证安装

bash 复制代码
# 检查 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 二进制文件:

bash 复制代码
# 方法 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 执行:

bash 复制代码
# 创建 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 开机自启

bash 复制代码
# 启用 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。如果文件不存在,可以手动创建。

bash 复制代码
# 创建或编辑 daemon.json
sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json

常用配置项示例:

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 服务:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

4.4 配置镜像加速器

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

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

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:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

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

相关推荐
сокол3 小时前
【网安-Web渗透测试-靶场系列】AWD-Platform(ctf-hub)
linux·服务器·ubuntu·网络安全·docker
月走乂山6 小时前
Windows 10 WSL2 安装问题排查与解决全记录
windows·docker·hyper-v·故障排查·wsl2
SuniaWang9 小时前
《Agentx专栏》03-架构设计:AgentX的六层架构是如何生长出来的
java·数据库·redis·docker·ai·架构
WAIT_TIME12 小时前
基于 Docker 快速构建 MySQL InnoDB Cluster 高可用集群与 Router 读写分离
mysql·docker·集群·innodb cluster
秋漓13 小时前
Docker学习与使用
学习·docker·容器
%KT%13 小时前
Windows安装wsl2和docker desktop,部署qdrant向量数据库
运维·docker·容器
PythonAI实战君13 小时前
Docker Compose 部署 MySQL 中文乱码避坑指南
docker·容器
PythonAI实战君13 小时前
若依后台管理系统 - Docker Compose 阿里云部署指南
后端·docker
小匠石钧知13 小时前
01_以RockyLinux的镜像为基础_构建自己开发学习所需的镜像
linux·docker·jdk·mariadb
摇滚侠14 小时前
Docker 安装 MySQL 8
mysql·docker·容器