Docker 安装配置入门 [三]:从环境准备到实战部署

引言:为什么 Docker 安装配置如此重要?

Docker 已成为现代软件开发和运维的基础设施,但安装配置过程中的细微差异 往往导致 "别人能用我不能用" 的情况。本系列文章将系统化解决 Docker 环境搭建问题,本文作为第二篇,将聚焦于2025 年最新版 Docker 的详细安装步骤、环境配置优化及常见问题解决方案,帮助你快速搭建稳定高效的 Docker 环境。

阅读提示:本文基于 Docker 28.x 和 Docker Desktop 4.43.1 版本编写,适用于 2025 年最新环境。如果你使用旧版本 Docker,部分步骤可能需要调整。

一、系统环境深度准备

1.1 硬件与操作系统兼容性矩阵

操作系统

最低配置

推荐配置

注意事项

Windows 10/11

4GB RAM,支持 VT-x/AMD-V

16GB RAM,SSD 硬盘

仅专业版 / 企业版支持 Hyper-V

macOS 13+

4GB RAM,Apple Silicon/Intel

16GB RAM,macOS 14+

M 系列芯片需 Rosetta 2

Ubuntu 24.04

2GB RAM,x86_64 架构

8GB RAM,40GB 空闲空间

必须使用 LTS 版本

1.2 虚拟化技术验证与开启

Windows 系统

powershell

bash 复制代码
# 以管理员身份运行PowerShell
systeminfo | findstr /i "hyper-v"
# 验证WSL 2状态
wsl --status

结果判断:若显示 "Hyper-V 已安装" 且 WSL 版本≥2.1.5,则满足要求。

macOS 系统

bash

perl 复制代码
# 验证虚拟化支持
sysctl -a | grep machdep.cpu.features | grep -iE "vmx|svm"

Linux 系统

bash

bash 复制代码
# 检查CPU是否支持虚拟化
grep -E --color 'vmx|svm' /proc/cpuinfo
# 验证内核版本
uname -r # 需要≥5.4.0

1.3 前置依赖安装

Ubuntu/Debian

bash

sql 复制代码
sudo apt update && sudo apt install -y \
  apt-transport-https \
  ca-certificates \
  curl \
  software-properties-common \
  bash-completion \
  dnsutils

CentOS/RHEL

bash

kotlin 复制代码
sudo yum install -y \
  yum-utils \
  device-mapper-persistent-data \
  lvm2 \
  curl \
  policycoreutils

Windows WSL 2 配置

powershell

csharp 复制代码
# 安装WSL 2
wsl --install
# 设置WSL 2为默认版本
wsl --set-default-version 2
# 安装Ubuntu发行版
wsl --install -d Ubuntu-24.04

二、分平台安装指南(2025 年最新版)

2.1 Windows 系统安装(WSL 2 后端)

详细步骤:

  1. 下载 Docker Desktop

    访问Docker 官网下载安装包,国内用户可使用阿里云镜像加速下载。

  2. 执行安装程序

    双击安装包,勾选以下选项:

    • √\] Use WSL 2 instead of Hyper-V

    • √\] Start Docker Desktop after installation

    首次启动会出现 Docker 订阅协议,点击 "Accept" 接受。等待鲸鱼图标变为稳定状态(约 1-3 分钟)。

  3. 验证安装结果

    打开 PowerShell 或 WSL 终端:

    bash

    bash 复制代码
    docker --version          # 应显示28.x.x版本
    docker compose version    # 应显示v2.29.x以上
    docker run hello-world    # 运行测试容器

常见问题解决:

问题 1:WSL 2 更新失败

powershell

css 复制代码
# 管理员身份运行
wsl --update
wsl --shutdown

问题 2:Docker 服务无法启动

powershell

bash 复制代码
# 重置Docker Desktop
& "C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchDaemon

2.2 macOS 系统安装

  1. 下载对应版本

  2. 安装步骤

    • 将下载的.dmg 文件打开,拖动 Docker 图标到 Applications 文件夹
    • 从启动台启动 Docker,首次启动会请求系统权限
    • 等待状态栏鲸鱼图标变为稳定状态
  3. 验证安装

    bash

    css 复制代码
    docker --version
    docker run --rm hello-world
  4. M 系列芯片特殊配置

    bash

    css 复制代码
    # 安装Rosetta 2(如需运行x86镜像)
    softwareupdate --install-rosetta --agree-to-license

2.3 Linux 系统安装(Ubuntu 24.04 示例)

官方仓库安装法(推荐):

  1. 卸载旧版本

    bash

    arduino 复制代码
    for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do
      sudo apt-get remove $pkg;
    done
  2. 添加 Docker 官方 GPG 密钥

    bash

    bash 复制代码
    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 仓库

    bash

    bash 复制代码
    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
  4. 安装 Docker Engine

    bash

    lua 复制代码
    sudo apt update
    sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
  5. 配置用户权限

    bash

    bash 复制代码
    # 将当前用户添加到docker组
    sudo usermod -aG docker $USER
    # 刷新组权限(无需注销)
    newgrp docker
  6. 设置开机自启

    bash

    bash 复制代码
    sudo systemctl enable docker.service
    sudo systemctl enable containerd.service

三、Docker Compose 安装与使用

3.1 安装方法对比

安装方式

命令

适用场景

优势

官方插件

apt install docker-compose-plugin

系统级安装

自动更新,兼容性好

二进制包

curl -L ... > /usr/local/bin/docker-compose

特定版本需求

版本可控,离线安装

pip 安装

pip install docker-compose

Python 环境

便于开发集成

3.2 官方推荐安装(Linux)

bash

bash 复制代码
# Ubuntu/Debian
sudo apt update
sudo apt install -y docker-compose-plugin

# 验证安装
docker compose version
# 应显示类似:Docker Compose version v2.29.1

3.3 手动安装指定版本

bash

bash 复制代码
# 下载最新稳定版(2.29.1为例)
DOCKER_COMPOSE_VERSION=v2.29.1
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

# 创建软链接(可选,兼容旧命令)
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

3.4 基础使用示例

创建docker-compose.yml文件:

yaml

yaml 复制代码
version: '3.8'
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    restart: unless-stopped
    
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: myapp
    volumes:
      - mysql-data:/var/lib/mysql

volumes:
  mysql-data:

启动服务:

bash

bash 复制代码
# 创建网站目录
mkdir -p html && echo "Docker Compose Demo" > html/index.html

# 启动所有服务
docker compose up -d

# 查看服务状态
docker compose ps

# 查看日志
docker compose logs -f web

四、国内镜像源配置与优化

4.1 2025 年可用镜像源测试报告

镜像源

地址

测试速度

稳定性

限制

1Panel

docker.1panel.live

3.2MB/s

★★★★★

毫秒镜像

docker.1ms.run

5.8MB/s

★★★★☆

需注册

腾讯云

mirror.ccs.tencentyun.com

2.5MB/s

★★★★★

轩辕镜像

docker.xuanyuan.me

4.1MB/s

★★★☆☆

部分地区受限

4.2 详细配置步骤

Linux 系统

bash 复制代码
# 创建配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.1panel.live",
    "https://docker.1ms.run",
    "https://mirror.ccs.tencentyun.com"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
EOF

# 重启服务使配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker

Docker Desktop(Windows/macOS)

  1. 打开 Docker Desktop

  2. 点击右上角设置图标 → Settings

  3. 选择左侧 Docker Engine

  4. 在配置编辑器中添加:

    json 复制代码
    {
      "registry-mirrors": [
        "https://docker.1panel.live",
        "https://docker.1ms.run",
        "https://mirror.ccs.tencentyun.com"
      ]
    }
  5. 点击 "Apply & Restart",等待 Docker 重启

4.3 配置验证与速度测试

perl 复制代码
# 验证镜像源配置
docker info | grep "Registry Mirrors" -A 5

# 速度测试(拉取nginx镜像)
time docker pull nginx:alpine
# 正常配置应在10秒内完成(取决于网络环境)

五、实战问题解决与优化

5.1 安装常见错误及解决方案

错误 1:GPG 密钥错误

现象apt update时出现 "NO_PUBKEY 7EA0A9C3F273FCD8"
解决

bash 复制代码
# 添加缺失的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

错误 2:WSL 2 文件权限问题

现象 :容器内无法写入挂载目录
解决

perl 复制代码
# 在PowerShell中执行
wsl --shutdown
# 修改WSL挂载选项
notepad "$env:USERPROFILE\.wslconfig"

添加以下内容:

ini 复制代码
[wsl2]
kernelCommandLine = vsyscall=emulate

错误 3:端口占用冲突

现象Bind for 0.0.0.0:80 failed: port is already allocated
解决

bash

bash 复制代码
# 查找占用端口的进程
sudo lsof -i :80
# 终止占用进程(PID为上一步结果)
sudo kill -9 <PID>

5.2 性能优化配置

资源限制配置

json

json 复制代码
{
  "default-shm-size": "2g",
  "oom-score-adjust": -1000,
  "cpu-shares": 512,
  "memory": "4g"
}

存储优化

bash 复制代码
# 启用镜像层压缩
echo '{"features":{"buildkit":true}}' | sudo tee /etc/docker/daemon.json
sudo systemctl restart docker

六、基础操作与验证

6.1 核心命令速查

功能

命令

示例

查看版本

docker --version

docker --version

镜像列表

docker images

docker images -a(显示所有)

容器状态

docker ps

docker ps -a(显示所有容器)

拉取镜像

docker pull

docker pull nginx:1.25-alpine

运行容器

docker run

docker run -d -p 80:80 --name web nginx

停止容器

docker stop

docker stop web

删除容器

docker rm

docker rm -f web(强制删除运行中容器)

6.2 完整验证流程

bash 复制代码
# 1. 拉取测试镜像
docker pull hello-world

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

# 3. 验证多容器协作(使用Compose)
git clone https://github.com/docker/awesome-compose.git
cd awesome-compose/nginx-php-fpm
docker compose up -d

# 4. 访问测试页面
curl http://localhost:8080
# 应显示PHP信息页面

# 5. 清理资源
docker compose down

七、总结与后续学习路径

恭喜你完成了 Docker 环境的安装与配置!通过本文,你已经掌握:

✅ 三大操作系统的 Docker 安装方法

✅ Docker Compose 的配置与使用

✅ 国内镜像源优化技巧

✅ 常见问题的诊断与解决

下一步学习建议

  1. Docker 网络模型深入理解
  2. 镜像构建与优化(Dockerfile 编写)
  3. 多容器应用编排实战
  4. Docker Swarm 或 Kubernetes 入门

推荐资源

问题反馈:如有任何安装问题或建议,请在评论区留言。下一篇我们将深入探讨 Docker 镜像构建与优化技术!

相关推荐
扶风呀2 小时前
分布式与微服务宝典
分布式·微服务·架构
IT小番茄6 小时前
Docker 入门指南:核心概念与实践[一]
架构
用户7143109838858 小时前
Claude AI企业级应用实战指南:大规模部署与架构设计
架构
用户7143109838858 小时前
Claude API定价策略深度分析:成本优化与ROI最大化
架构
腾飞的信仰18 小时前
51 单片机分层架构的模块依赖关系图
单片机·嵌入式硬件·架构
白-胖-子21 小时前
深度剖析主流AI大模型的编程语言与架构选择:行业实践与技术细节解读
人工智能·架构
nbsaas-boot21 小时前
用生成器守住架构,用 AI 放大效率:一套可落地的 AI 编程方法论
人工智能·架构
架构师沉默1 天前
外卖平台每天1000万订单查询,是如何扛住高并发的?
java·后端·架构
天蓝色的鱼鱼1 天前
Vue项目多级路径部署终极指南:基于环境变量的统一配置方案
前端·vue.js·架构