ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Docker Desktop提示WSL 2未安装?从原理到实操完整修复指南

2026/9/16 20:16:53 拓冰建站 浏览量
Docker Desktop提示WSL 2未安装?从原理到实操完整修复指南 双机 Docker Desktop双击图标等来的不是“欢迎使用”而是一句“WSL 2 is not installed”我相信很多 Windows 用户对这句话都不陌生。尤其新换电脑或者刚重装系统、刚升级到 Win11 的朋友十有八九会卡在这一步。这条提示翻译过来意思很直白Docker Desktop 现在默认依赖 WSL 2 来跑 Linux 容器而你的系统里根本没启用 WSL 2。很多人的第一反应是“我去装一个 WSL”但装完之后发现还是有问题要么版本不对要么内核没装要么压根没启用虚拟机平台。这篇文章我会把整个问题拆开从原理讲到实操把每一步为什么这么做、不这么做会有什么后果都讲清楚。不管你是第一次装 Docker还是已经折腾了一下午按这个流程走一遍都能解决。1. 问题定位搞懂 WSL 2 到底卡在哪一步1.1 为什么 Docker Desktop 一定要绑定 WSL 2先说个大家可能忽略的背景。Docker Desktop 在 Windows 上其实有两种后端可以选老的 Hyper-V 后端和现在的 WSL 2 后端。默认情况下新版 Docker Desktop 会优先使用 WSL 2因为它启动更快、内存占用更小、和 Windows 文件系统交互也更顺畅。WSL 2 本质上是一个轻量虚拟机跑的是真正的 Linux 内核Docker 的 Linux 容器就直接跑在这个内核之上性能和 Linux 本机几乎没什么差别。所以当你看到 “WSL 2 is not installed” 时Docker Desktop 想表达的意思其实是它去访问 WSL 2 的运行时环境但发现这个环境根本不存在或不可用。这个问题不是 Docker 本身坏了而是 Windows 侧的 WSL 功能没有正确启用。1.2 先确认你的系统版本是否支持在开始折腾之前我建议你先把系统版本看清楚。WSL 2 对 Windows 版本有硬性要求Windows 10 版本 2004内部版本 19041或更高版本或者 Windows 11 全系列都支持。如果你的系统停留在 Windows 10 1903 或者更老那 WSL 2 是没有办法直接使用的。这时候要么先升级系统要么退而求其次用 Docker Desktop 的 Hyper-V 后端。查看系统版本的方法很简单按 Win R输入 winver回车。弹出的窗口里会显示系统版本和内部版本号。我遇到过不少朋友折腾半天装不上 WSL 2最后发现系统是 Windows 10 1809那当然装不上因为老版本系统根本没有这个功能入口。1.3 用命令行快速自查当前 WSL 状态接下来打开 PowerShell 或者命令提示符输入几条命令确认一下当前的情况wsl --status如果提示“未安装用于 Linux 的 Windows 子系统”那说明 Windows 功能还没开。如果提示“默认版本2”那说明 WSL 2 已经是默认版本了。还可以再跑一条wsl --list --verbose这条命令会列出当前所有已安装的 WSL 发行版以及它们的 WSL 版本。如果列表是空的说明你虽然装了 WSL 运行时但还没有安装任何一个 Linux 发行版Docker Desktop 一样可能报错。这些信息先记下来后面排查时非常有用。2. 标准修复流程从现在开始一步步走通2.1 启用 Windows 功能两个关键开关必须同时打开要解决“WSL 2 is not installed”第一步不是去下载什么内核包而是先打开 Windows 功能。按 Win R 输入 optionalfeatures 并回车在弹出的“Windows 功能”窗口里勾选两个选项适用于 Linux 的 Windows 子系统和虚拟机平台。这两个缺一不可。很多人只勾了第一个忘了第二个结果 WSL 2 的内核根本没法跑虚拟化。如果你嫌图形界面点来点去麻烦也可以直接用管理员身份的 PowerShell 跑两条命令dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart注意这里有个很容易踩的坑这两条命令执行结束后系统大概率需要重启。不要漏掉重启这一步直接装内核包那样功能还没有真正生效后面启动还是会报错。2.2 下载并安装 WSL 2 内核更新包重启完成之后去微软官方文档里的“WSL 2 内核更新包”链接下载 wsl_update_x64.msi 这个安装包然后以管理员身份安装。这一步的作用是给 Windows 里的 WSL 2 运行时补上真正的 Linux 内核没有它WSL 2 就只是一个空壳跑不了任何发行版。老版本的 Windows 10 在安装完这个内核包之后还需要手动执行wsl --set-default-version 2这样告诉系统后续安装的所有发行版都默认使用 WSL 2 架构。如果你用的是新版 Windows 11很多情况下wsl --set-default-version 2已经不需要手动执行了系统默认就是 WSL 2。但如果你的系统是从旧版本升级上来的还是建议跑一下这条命令避免后续装发行版时莫名其妙变成 WSL 1。2.3 安装一个 Linux 发行版别偷懒跳过这步很多教程写到这里就让你去打开 Docker Desktop但如果你wsl --list --verbose列表里空空如也Docker Desktop 打开后有很大概率还是会报错。原因很简单Docker Desktop 的 WSL 2 后端需要一个真实的 Linux 发行版来承载容器它自己不会凭空变出来。最简单的方式是在 PowerShell 里直接执行wsl --install -d Ubuntu这条命令会自动下载并安装 Ubuntu。装完后会提示你设置 Linux 用户名和密码设置完你就有自己的 Linux 环境了。如果网络状况不太理想Ubuntu 下载比较慢也可以去 Microsoft Store 里搜索 Ubuntu 手动安装。这一步完成后再打开 Docker Desktop你会发现报错基本就消失了。值得注意的是安装完 Ubuntu 后记得在 PowerShell 里确认一下这个发行版确实是以 WSL 2 模式运行的wsl --list --verbose如果看到 Ubuntu 对应的版本是 1说明它被创建成了 WSL 1需要手动转换wsl --set-version Ubuntu 2转换过程需要一点时间期间不要关闭终端窗口。3. 常见拦截项虚拟化未开启等问题的定位与操作3.1 进入 BIOS 开启虚拟化技术有些朋友把该装的都装了重启也重启了结果打开 Docker Desktop 弹出来的却是另一条提示Docker Desktop failed to start because virtualisation support wasn’t detected检测不到虚拟化支持。这条报错和标题里的 WSL 2 is not installed 经常同时出现本质上是同一个根源WSL 2 需要 CPU 虚拟化技术而你的 BIOS 里把它关了。解决办法是开机时按 Del 或 F2 进入 BIOS 设置具体按键因主板品牌而异华硕、微星、技嘉等品牌各不相同在高级设置里找到 Intel Virtualization Technology 或 AMD SVM Mode把它改为 Enabled。Intel 平台的选项通常叫 VT-xAMD 平台叫 SVM。改完后保存并退出 BIOS重新进入 Windows。这一步非常关键如果 BIOS 里没开虚拟化后面所有软件层面的配置都白搭。3.2 Windows 功能已勾选但提示依旧存在还有一种情况比较诡异你明明在“Windows 功能”里看到了两个选项都打勾了但 Docker Desktop 仍然提示 WSL 2 未安装。这种时候优先怀疑 Windows 没有真正完成功能启用。去设置 - 更新和安全 - Windows 更新里检查一下是否有挂起的更新或需要重启的提示先让系统彻底完成配置。如果更新已经装完了但仍然报错再试试在 PowerShell 里执行wsl --update这条命令会更新 WSL 内核到最新版本很多“内核过期”问题都能通过它解决。3.3 Hyper-V 冲突与老版本 Windows 的特殊处理老版本 Windows 10如 1809 或更早版本如果想要使用 WSL 2会遇到一个比较麻烦的情况WSL 2 依赖虚拟机平台而虚拟机平台和 Hyper-V 功能在某些系统版本上管理得不够清晰。不过正常情况下它们是可以在 Windows 10 2004 及以上版本中共存的。如果你坚持用老版本系统可以考虑直接在 Docker Desktop 的设置里把后端从 WSL 2 切换为 Hyper-V但要注意这时候 Docker Desktop 的性能和启动速度会明显下降。我不太建议在旧版本上硬撑着用 Docker Desktop因为后续很多镜像和功能都会对 WSL 2 更友好。如果工作中必须用 WSL 2升到 Windows 10 2004 或直接升 Windows 11 是长远来看更省心的一步。4. 排查技巧与实战避坑4.1 查看 WSL 服务是否正常运行Windows 上 WSL 2 的运行依赖两个服务LxssManager 和 WSL Service。有时候 Windows 更新或者某些安全软件会把这些服务弄成禁用状态。你可以在服务管理器services.msc里搜索 “WSL Service” 和 “LxssManager”确认它们的状态是“自动”并已经启动。如果服务是停着的右键启动即可。启动 Docker Desktop 前也建议先在 PowerShell 里执行wsl --shutdown把之前残留的 WSL 进程彻底清掉再重新启动 Docker这样能避开很多奇怪的缓存问题。4.2 Docker Desktop 一直卡在 “Starting” 怎么办有朋友会遇到这种情况报错倒是没有了但 Docker Desktop 打开后界面一直显示 “Docker Desktop starting...”转圈转半天进不去。这时候优先检查右下角托盘区域有没有海豚图标右键点击它选择 “Quit Docker Desktop”然后彻底退出 Docker。打开任务管理器结束所有和 Docker 或 com.docker 相关的进程再重新启动。如果重启 Docker Desktop 仍然卡住问题大概率出在 WSL 的发行版上。执行wsl --shutdown后再执行wsl --list --verbose确认发行版状态如果有发行版显示为 Stopped尝试用wsl -d Ubuntu手动进入一下这个发行版确认它能正常进入 Linux 命令行。能正常进入的话再等几秒再启动 Docker Desktop实测下来基本都能进。4.3 常见问题速查表现象可能原因解决方法提示 WSL 2 is not installedWindows 功能未启用启用“适用于 Linux 的 Windows 子系统”和“虚拟机平台”并重启提示 virtualization support wasn’t detectedBIOS 未开启 CPU 虚拟化进入 BIOS 开启 VT-x 或 SVM已启用功能仍然报错 WSL 2 not installed未安装 WSL 2 内核更新包下载并安装 wsl_update_x64.msi提示 WSL 2 需要更新内核版本WSL 内核过期wsl --update后重启提示 “我们无法完成此操作”Windows 系统版本过低升级到 Windows 10 2004 或 Windows 11Docker Desktop 卡在 StartingWSL 进程残留或发行版异常wsl --shutdown后重新启动 Docker DesktopDocker 启动后无法用镜像发行版以 WSL 1 模式运行wsl --set-version Ubuntu 2转为 WSL 2Docker 命令行无法连接Docker Desktop 未正常启动确认 Docker Desktop 图标变为运行状态后再使用4.4 镜像存储位置与 WSL 发行版管理很多实际使用 WSL 2 后端跑 Docker 的朋友一段时间后会发现自己 C 盘空间急剧缩小。这是因为 Docker Desktop 默认会把镜像和容器数据存放在 WSL 发行版的虚拟硬盘文件里这个文件位于%LOCALAPPDATA%\Docker\wsl或类似的路径下大小只增不减。如果你发现 C 盘告急可以考虑把整个 WSL 发行版迁移到其他盘。网上有很多专门的迁移工具和脚本但操作之前一定记得用wsl --export先导出发行版备份万一迁移失败还能导回来。另外Docker Desktop 的 WSL Integration 设置里可以控制哪些发行版被 Docker 使用。如果你系统里装了好几个 Linux 发行版但只需要其中某一个跑 Docker可以在 Docker Desktop 设置 - Resources - WSL Integration 里勾选对应的发行版避免 Docker 在所有发行版里挂载资源减少无谓开销。5. 一些实际操作心得说实话WSL 2 这套东西刚推出来的时候兼容性和稳定性不像现在这么成熟老版本系统上各种报错连环套那时候我只能一步一步拆开排查。现在新版 Windows 已经好很多了但只要遇到报错我的第一反应还是先看 WSL 状态再查虚拟化开关。整个过程走下来最容易被忽略的就是“装完内核还要装发行版”这一步很多人卡在这里。还有一点想提醒大家如果你用的是公司电脑安全软件可能会拦截 WSL 相关的系统调用导致 Docker 启动异常。这种情况建议先暂时退出安全软件或者联系 IT 看看是不是有策略限制。最后遇到问题不要着急先跑一遍wsl --status、wsl --list --verbose这两条命令把现状摸清楚按上面的流程一步步来基本都能顺利跑起来。按照我个人经验Windows 上跑 Docker 最稳定的状态就是系统更新到最新版、WSL 2 正常启用、Ubuntu 发行版保持 WSL 2 模式这样平时开发调试基本不会再遇到环境问题。