第03章:Docker 安装部署

本章目标:在不同操作系统上完成 Docker 的安装、配置和验证,搭建后续学习的实验环境。


3.1 安装前的准备工作

3.1.1 系统要求

操作系统 最低版本 推荐版本 安装方式
Windows Windows 10 64-bit (Pro/Enterprise/Education) Windows 11 Docker Desktop
macOS macOS 10.15 (Catalina) macOS 14+ Docker Desktop
Ubuntu 18.04 LTS 22.04 LTS Docker Engine (CE)
CentOS 7 8/Stream 9 Docker Engine (CE)
Debian 9 (Stretch) 12 (Bookworm) Docker Engine (CE)

3.1.2 硬件虚拟化要求

Docker Desktop 在 Windows/macOS 上需要硬件虚拟化支持:

检查方法:
1. 任务管理器 → 性能 → CPU → 虚拟化:已启用
2. 或在 BIOS 中确认以下选项已开启:
   - Intel: Intel Virtualization Technology (VT-x)
   - AMD: AMD-V / SVM Mode

3.2 Windows 安装 Docker Desktop

3.2.1 安装步骤

1. 下载 Docker Desktop
   访问: https://www.docker.com/products/docker-desktop/
   下载: Docker Desktop for Windows

2. 运行安装程序
   - 双击 Docker Desktop Installer.exe
   - 勾选 "Use WSL 2 instead of Hyper-V"(推荐)
   - 点击 OK 开始安装

3. 安装完成后重启电脑

4. 启动 Docker Desktop
   - 从开始菜单启动
   - 首次启动需要等待初始化(1-3分钟)
   - 看到鲸鱼图标变为绿色表示启动成功

3.2.2 WSL 2 后端(推荐)

Windows 上有两种虚拟化后端:

后端 说明 推荐度
WSL 2 使用 Windows Subsystem for Linux 2 ⭐⭐⭐ 推荐
Hyper-V 使用 Windows 原生虚拟化 ⭐⭐ 传统方案

安装 WSL 2:

# 以管理员身份运行 PowerShell

# 启用 WSL 功能
wsl --install

# 设置 WSL 2 为默认版本
wsl --set-default-version 2

# 查看 WSL 状态
wsl --list --verbose

3.2.3 验证安装

# 打开 PowerShell 或 CMD
docker --version
# Docker version 27.x.x, build xxxxxxx

docker compose version
# Docker Compose version v2.x.x

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

3.2.4 配置 Docker 镜像加速

Docker Desktop → Settings → Docker Engine → 添加:

{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com"
  ]
}

3.3 macOS 安装 Docker Desktop

3.3.1 安装步骤

1. 下载 Docker Desktop
   访问: https://www.docker.com/products/docker-desktop/
   下载: Docker Desktop for Mac

   注意区分芯片:
   - Apple Silicon (M1/M2/M3/M4): 选择 "Apple Chip" 版本
   - Intel: 选择 "Intel Chip" 版本

2. 打开 .dmg 文件
   将 Docker.app 拖入 Applications 文件夹

3. 首次启动
   - 从 Applications 启动 Docker
   - 授权必要的系统权限
   - 等待初始化完成(状态栏鲸鱼图标变绿)

3.3.2 验证安装

# 打开终端
docker --version
docker run hello-world

3.3.3 配置镜像加速

Docker Desktop → Settings → Docker Engine → 添加:

{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com"
  ]
}

3.4 Ubuntu 安装 Docker Engine

3.4.1 卸载旧版本(如果有)

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

# 删除旧的依赖
sudo apt-get autoremove

3.4.2 安装 Docker Engine(官方源)

# Step 1: 更新 apt 包索引
sudo apt-get update

# Step 2: 安装依赖包
sudo apt-get install -y \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

# Step 3: 添加 Docker 官方 GPG 密钥
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Step 4: 添加 Docker 官方软件源
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

# Step 5: 安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Step 6: 将当前用户加入 docker 组(免 sudo)
sudo usermod -aG docker $USER
newgrp docker  # 立即生效(或重新登录)

3.4.3 配置镜像加速

# 创建 Docker 配置目录(如果不存在)
sudo mkdir -p /etc/docker

# 写入配置
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  },
  "storage-driver": "overlay2"
}
EOF

# 重新加载并重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker

3.4.4 验证安装

# 检查 Docker 版本
docker --version
# Docker version 27.x.x, build xxxxxxx

# 检查 Docker 信息
docker info

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

3.5 CentOS 安装 Docker Engine

3.5.1 卸载旧版本

sudo yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

3.5.2 安装 Docker Engine

# Step 1: 安装依赖
sudo yum install -y yum-utils

# Step 2: 添加 Docker 官方软件源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# Step 3: 安装 Docker Engine
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Step 4: 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

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

3.5.3 验证安装

docker --version
docker run hello-world

3.6 国内镜像加速配置

3.6.1 为什么需要镜像加速

Docker 默认从 Docker Hub(registry-1.docker.io)拉取镜像。由于网络原因,国内直接访问速度较慢甚至无法连接。

3.6.2 常用镜像加速器

加速器 地址 状态
腾讯云 https://mirror.ccs.tencentyun.com ✅ 可用
阿里云 https://<your-id>.mirror.aliyuncs.com ✅ 需注册
中国科学技术大学 https://docker.mirrors.ustc.edu.cn ⚠️ 不稳定
清华大学 https://docker.mirrors.tuna.tsinghua.edu.cn ⚠️ 不稳定

⚠️ 注意:镜像加速器地址可能随时变化,请以官方文档为准。

3.6.3 配置方法

Linux

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com"
  ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Windows/macOS
Docker Desktop → Settings → Docker Engine → 在 JSON 中添加 registry-mirrors


3.7 Docker Compose 安装

3.7.1 内置版本(推荐)

Docker Desktop 和较新版本的 Docker Engine 已内置 docker compose(注意没有连字符):

# 检查是否已安装
docker compose version
# Docker Compose version v2.27.x

3.7.2 独立安装(如果未内置)

# 下载最新版本
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证
docker-compose --version

3.8 安装验证清单

完成安装后,运行以下命令确保一切正常:

# 1. Docker 版本
docker --version
# ✅ 应输出 Docker version 20.10+

# 2. Docker Compose 版本
docker compose version
# ✅ 应输出 Docker Compose version v2.x+

# 3. Docker 详细信息
docker info
# ✅ 应能看到 Server 版本、存储驱动、内存等信息
# ✅ 确认 Storage Driver 是 overlay2

# 4. 运行 Hello World
docker run hello-world
# ✅ 应输出 "Hello from Docker!"

# 5. 拉取一个镜像
docker pull nginx:latest
# ✅ 应能正常下载

# 6. 运行一个容器
docker run -d -p 8080:80 --name test-nginx nginx:latest
# ✅ 应能看到容器 ID

# 7. 查看运行中的容器
docker ps
# ✅ 应能看到 test-nginx 容器在运行

# 8. 测试端口映射
curl http://localhost:8080
# ✅ 应能看到 Nginx 的欢迎页面

# 9. 清理测试容器
docker stop test-nginx
docker rm test-nginx
docker rmi nginx:latest

3.9 常见安装问题

问题 1:Docker 启动失败

# 查看 Docker 日志
sudo journalctl -u docker.service --no-pager -n 50

# 常见原因及解决方案:
# 1. 端口被占用 → 修改 /etc/docker/daemon.json 中的 hosts 配置
# 2. 磁盘空间不足 → 清理磁盘或修改 data-root
# 3. Cgroup 版本不兼容 → 添加启动参数 --cgroupdriver=systemd

问题 2:permission denied

# 错误: Cannot connect to the Docker daemon
# 原因: 当前用户不在 docker 组中
sudo usermod -aG docker $USER
newgrp docker  # 或重新登录

问题 3:镜像拉取超时

# 检查网络连接
curl https://registry-1.docker.io/v2/

# 配置镜像加速器(见 3.6 节)

# 如果使用代理
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/proxy.conf <<EOF
[Service]
Environment="HTTP_PROXY=http://proxy:port"
Environment="HTTPS_PROXY=http://proxy:port"
Environment="NO_PROXY=localhost,127.0.0.1"
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

问题 4:WSL 2 相关问题(Windows)

# 确保 WSL 2 已安装且为默认版本
wsl --set-default-version 2

# 如果 WSL 2 无法启动
wsl --update
wsl --shutdown  # 关闭所有 WSL 实例后重试

3.10 卸载 Docker

Linux 卸载

# 卸载 Docker Engine
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 删除数据目录
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo rm -rf /etc/docker

Windows 卸载

设置 → 应用 → 搜索 "Docker" → 卸载 Docker Desktop
手动删除: C:\ProgramData\Docker(可选)

macOS 卸载

Applications → 拖动 Docker.app 到废纸篓
手动删除: ~/Library/Group Containers/group.com.docker(可选)
手动删除: ~/Library/Containers/com.docker.docker(可选)

3.11 本章小结

操作系统 安装方式 备注
Windows Docker Desktop + WSL 2 需要 Pro/Enterprise 版
macOS Docker Desktop 区分 Intel/Apple Silicon
Ubuntu Docker Engine (CE) 官方源 推荐生产环境
CentOS Docker Engine (CE) 官方源 CentOS 7/8/Stream

3.12 课后练习

  1. 实操题:在你的操作系统上安装 Docker,完成验证清单中的所有检查。
  2. 配置题:配置镜像加速器,验证拉取速度的提升。
  3. 探索题:阅读 /etc/docker/daemon.json,尝试添加 debug: true 选项,观察日志变化。

📖 下一章:Docker 镜像管理 —— 全面掌握镜像的增删改查

Logo

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

更多推荐