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 几乎无异。

相关推荐
烂白菜1 小时前
码道启辰:定时任务自由编排
运维·服务器·网络
悠悠121381 小时前
Linux 7.1 来了:新 NTFS 驱动、干掉 i486、FRED 默认开启,这次更新有点东西
linux·运维·服务器
by————组态1 小时前
Ricon组态组件生态 - 丰富的可视化组件库
运维·前端·物联网·组态·组态软件
格发许可优化管理系统1 小时前
Mentor许可证与其他软件许可证的深度比较
java·大数据·运维·c语言·c++·算法
睡不醒男孩0308231 小时前
CLup篇之达梦数据库管理
运维·服务器·数据库
BomanGe31 小时前
NSK直线导轨LH20HL替代升级指南
运维·服务器·数据库·经验分享·规格说明书
万能的知了1 小时前
K8s到底需不需要GPU节点?集群资源分配的底层逻辑
云原生·容器·kubernetes
做一个快乐的小傻瓜2 小时前
ZYNQ DEV套件引脚约束
java·linux·运维
极客先躯2 小时前
高级java每日一道面试题-2026年02月12日-实战篇[Docker]-什么是容器的 Seccomp 配置?如何自定义?
java·运维·分布式·docker·容器·自动化·文件