Windows 上用 WSL 2 起 Docker Desktop:安装前的 6 项环境自查(win10开启wsl2) ypxx.net

很多人在 Windows 上装 Docker Desktop,卡住的位置并不是安装过程本身,而是按下安装按钮之前的环境状态。安装包顺利跑完,双击图标后引擎起不来,于是开始怀疑安装包损坏、怀疑系统有问题,卸载重装一遍,结果还是一样。

真正的原因通常更简单:Docker Desktop 在 Windows 上默认使用 WSL 2 作为后端,引擎实际运行在一个 Linux 虚拟机里。WSL 2 是 Windows 上运行 Linux 的子系统,它让这个虚拟机不需要你手动维护。这套结构对宿主环境有一组明确的前置要求,任何一项不满足,故障都会推迟到启动阶段才暴露出来。

所以更省时间的做法不是失败之后排查,而是在安装之前把这 6 项逐一核对完。

先给结论:安装前要核对的 6 项
  1. WSL 版本不低于 2.1.5
  2. Windows 版本与内部版本号在支持范围内
  3. 内存至少 8 GB
  4. 64 位 CPU,且已在 BIOS/UEFI 中开启硬件虚拟化
  5. 安装模式(per-user 还是 all-users)在安装前定好
  6. 先卸载 WSL 发行版里已有的 Docker Engine 与 Docker CLI

下面逐项说明怎么查、达标线是多少、不达标怎么处理。

第 1 项:WSL 版本

Docker Desktop 要求 WSL 版本不低于 2.1.5,并建议直接使用最新版。版本偏低时,即使界面能打开,引擎也可能表现异常。

查看当前 WSL 版本:

wsl --version

如果这条命令没有输出版本信息,说明系统里还是较早的内置版本。安装或升级:

wsl --installwsl --update

系统提示需要重启时按提示重启。内核更新在重启后才生效,跳过重启会让人误以为升级没起作用。

第 2 项:Windows 版本与内部版本号

Docker Desktop 对 Windows 版本有明确的支持矩阵:

系统 受支持版本 内部版本号
Windows 10 64 位 Enterprise / Pro / Education 22H2 19045
Windows 11 64 位 Enterprise / Pro / Education 23H2 或更高 22631 起

有两点需要注意:

  • Windows Server 系列(包括 2019 与 2022)不在 Docker Desktop 的支持范围内,服务端场景需要改用其它容器方案。
  • 如果要运行 Windows 容器,需要 Pro 或 Enterprise 版本;Home 与 Education 只能运行 Linux 容器。

查看本机版本的方法:按 Win + R,输入 winver 回车。弹窗里会同时显示版本号和内部版本号,直接和上表对照即可。

第 3 项:内存

要求是至少 8 GB 内存。这个数字不是随手写的:

  • WSL 2 虚拟机空转时约占 1.2 至 2 GB;
  • 再加上引擎进程,以及一个常见的「Web 服务 + API + 数据库」组合,日常工作负载大约到 3 至 4 GB。

4 GB 是文档上的最低值,实际开发会相当紧张。如果机器正好是 8 GB,建议在做镜像构建这类内存密集操作前先关掉浏览器。

第 4 项:CPU 与硬件虚拟化

要求是 64 位处理器且支持 SLAT(二级地址转换,一种让虚拟机直接访问内存、减少地址翻译开销的硬件能力),并在 BIOS/UEFI 中开启硬件虚拟化。

这一项不满足时,Docker Desktop 不是降级运行,而是直接拒绝启动——这也是「装完打不开」最常见的原因之一。

在 Windows 里确认虚拟化状态:按 Ctrl + Shift + Esc 打开任务管理器,切到「性能」标签,选中 CPU,右侧面板会显示「虚拟化:已启用」或「已禁用」。若显示已禁用,需要重启进入 BIOS/UEFI,打开对应开关后保存退出。

第 5 项:安装模式

安装器会提供两种模式,差别比看上去大:

对比项 per-user(按用户安装) all-users(所有用户)
安装位置 用户目录下 系统目录
管理员权限 不需要 需要提权
支持后端 仅 WSL 2 WSL 2 或 Hyper-V
Windows 容器 不支持 支持

关键约束是:两种模式不能事后切换,只能卸载后重装。所以这件事必须在安装前决定。

判断方法很简单:只做 Linux 容器开发、这台机器只有你一个人用,选 per-user;多人共用这台机器,或者需要 Windows 容器,选 all-users。

第 6 项:清理 WSL 里已有的 Docker 组件

这一项最容易被忽略。如果你之前按某些教程在 WSL 发行版内部直接装过 Docker Engine 或 Docker CLI,必须先卸载,再安装 Docker Desktop。

原因很直接:两者并存会造成守护进程与本地通信接口(socket)冲突。表现形式是引擎状态反复异常,而且很难从表象倒查到这两个并存安装。

收尾验证:两条命令

安装完成后,打开一个新的终端窗口(新窗口很重要,环境变量变更只对新会话生效)执行:

docker --version

再跑一次示例容器:

docker run --rm hello-world

两条都能正常输出,才说明引擎确实可用,而不只是「安装成功」。第一条只证明客户端在,第二条才真正验证引擎能拉取并运行容器。

边界与坑
  • Windows Server 不适用。这份清单只针对 Docker Desktop,服务端环境请走独立的容器方案。
  • 内存回收设置属于实验性功能。WSL 提供的自动内存回收开关能缓解内存占用,但它不是稳定特性,不建议当作长期依赖。
  • 引擎数据默认放在系统盘。WSL 2 引擎的数据默认位于用户目录下,镜像与构建缓存会让它快速变大,建议安装后主动把存放位置改到空间更充裕的盘。
  • 这份清单只管引擎能否起来。容器内部应用自身的启动失败,与本文的自查项无关。
  • 版本与最低要求会变化。以上版本号以撰写时的要求为准,实际安装前请再核对一次。
复盘建议

把环境前置条件从「失败后的排查项」前移成「安装前的检查项」,是这类问题最省时间的处理方式。安装前花十分钟核对,比装完出问题后卸载重装要划算得多。

另外建议把本机实际通过的版本组合记下来,形成自己的环境基线。换机器或者重装系统时,这份基线就是最直接的对照依据——哪些版本是你亲测跑通的,一目了然。