WSL2 下 Docker Desktop 完全配置指南:从安装到极速体验

1. 环境准备:启用 WSL 2

2. 安装 Docker Desktop

前往 Docker Desktop 官方下载页 下载最新版安装程序(.exe)。

安装过程中,请务必确保勾选 "Use WSL 2 instead of Hyper-V"(使用 WSL 2 而不是 Hyper-V)。这是默认选项,保持勾选即可。

3. 核心配置:配置国内镜像源(解决拉取慢)

由于网络原因,直接拉取 Docker Hub 镜像(如 nginx, mysql)通常会非常慢甚至失败。强烈建议配置国内镜像加速器。

操作步骤

  1. 打开 Docker Desktop,点击右上角的 ⚙️ Settings
  2. 选择 Docker Engine
  3. 在 JSON 配置框中,添加 registry-mirrors 字段。推荐使用以下 2026 年实测可用的镜像源:
json 复制代码
{
  "registry-mirrors": [
    "https://docker.xuanyuan.me",
    "https://docker.1ms.run",
    "https://docker.m.daocloud.io"
  ]
}
  1. 点击 Apply & restart

4. 关键步骤:更改 Docker 数据存放路径(释放 C 盘空间)

Docker 默认会将虚拟磁盘数据(镜像、容器等)存放在 C 盘的 AppData 隐藏目录下。为了避免 C 盘爆满,强烈建议将其迁移至其他盘(如 D 盘)。

操作步骤

  1. 确保 Docker Desktop 正在运行(左下角状态为 Engine running)。
  2. 点击右上角的 ⚙️ Settings(设置)。
  3. 在左侧菜单选择 Resources -> Advanced
  4. 找到 Disk image location 选项,点击 Browse ,选择您想要存放数据的新目录(例如 D:\ProgramData\Docker\DockerDesktopWSL)。
  5. 点击右下角的 Apply & Restart
  6. 在弹出的确认框中点击 Yes, move it

💡 避坑提示 :Docker 会自动将现有的核心数据盘安全迁移到新位置。迁移完成后,C 盘可能仍会保留一个较小的 Docker 文件夹(存放日志和运行时配置),这是正常现象。

⚠️ 警告 :千万不要手动去剪切 C:\Users\你的用户名\AppData\Local\Docker\wsl 文件夹,这会导致 Docker 启动异常或数据损坏!


5. 性能调优:解决文件读写慢

这是一个常被忽视但致命的问题:千万不要把项目代码放在 Windows 盘(C:\D:\)下!

  • 原因 :Docker 运行在 WSL 2 (Linux) 中。如果你的代码在 Windows 盘(例如 C:\Users\...),Docker 访问文件需要跨系统(Win <-> Linux),I/O 性能会下降 10 倍以上。
  • 正确做法 :将项目放在 WSL 2 的文件系统内。
    • 路径 :在文件资源管理器地址栏输入 \\wsl$\Ubuntu\home\你的用户名\
    • 操作 :把你的代码克隆或移动到这个目录下,然后再在这个目录下执行 docker compose up

6. 验证安装

在 PowerShell 或 WSL 终端中执行以下命令:

powershell 复制代码
# 查看 Docker 版本
docker --version

# 查看 Compose 版本 (注意是空格,不是下划线)
docker compose version

# 拉取一个测试镜像 (应该会很快)
docker pull nginx:alpine

7. 常见问题排查

  • 错误:WSL 2 installation is incomplete
  • 错误:port is already allocated
    • 端口被占用,修改 docker-compose.yml 中的宿主机端口(如 "8081:80")。
  • Docker Desktop 启动失败
    • 检查 BIOS 设置,确保 Virtualization (虚拟化) 已开启。

结语

至此,你已经拥有了一个基于 WSL2 的高性能 Docker 环境。记得始终在 \\wsl$\ 路径下进行开发,配合国内镜像源,你的开发体验将与原生 Linux 几乎无异。

相关推荐
鹤落晴春几秒前
【K8s】认识Kubernetes API:从CRD出发的一次梳理
云原生·容器·kubernetes
yanwumuxi1 小时前
Docker记录:误删宿主机挂载目录导致 PostgreSQL 数据丢失
docker·postgresql·容器
海鸥811 小时前
AIOps(智能运维)理解
运维·人工智能
码农小韩2 小时前
Linux应用开发(一)——Linux的标准IO
linux·运维·服务器
路弥行至2 小时前
Linux (ARM64 / Jetson) 挂载 exFAT 移动硬盘排障与离线安装指南
linux·运维·服务器·经验分享·笔记·jetson·exfat
漫谈数据智理2 小时前
主动元数据为何是数据编织的核心——从“连接数据”走向“感知、理解与行动”的 Data Fabric
运维·fabric
数据库小学妹2 小时前
MySQL长事务复盘:Sleep连接、MDL排队与undo滞留
运维·数据库·mysql
云泽8082 小时前
Linux 系统编程实战:从零手写一个高性能终端进度条
linux·运维·服务器
cui_hao_nan3 小时前
Docker 学习 5
docker·容器
Lsetea3 小时前
ACME 报 rate limit:Let‘s Encrypt 限速类型与重试策略
运维·https·证书·ssl·acme