wsl --list --verbose可查看所有已安装wsl发行版的名称、运行状态(running/stopped)及真实wsl版本(1或2),其中version=2才代表该发行版实际运行在wsl2上,星号*仅标示默认发行版,不决定其版本。

怎么用 wsl --list --verbose 看清每个发行版的真实版本
直接在 PowerShell 或 CMD(管理员或非管理员均可)里运行这行命令,就能列出所有已注册的 WSL 发行版及其当前状态和版本号:
wsl --list --verbose
输出类似这样:
NAME STATE VERSION * Ubuntu-22.04 Running 2 Debian Stopped 1 kali-linux Not Installed -
关键看 VERSION 这一列:只有显示为 2 的才是 WSL2 实例。带星号的 * 表示默认发行版,但不等于它就是 WSL2 —— 得以 VERSION 列为准。
常见误区:
-
wsl -v只显示全局 WSL 版本(即默认版本设置),不能反映具体发行版实际运行在哪一版 - 即使执行过
wsl --set-default-version 2,旧发行版仍可能卡在 WSL1,必须单独升级 - 从 Microsoft Store 安装的新发行版默认是 WSL2,但如果你是从 tar 导入或旧系统迁移来的,大概率仍是 WSL1
为什么 docker info 里看不到 WSL2 发行版名
docker info 输出中出现 WSL Integration: enabled 和 Default Runtime: runc 是正常现象,但它**不会列出你装了哪些 WSL 发行版**。Docker Desktop 只关心「有没有至少一个可用的 WSL2 发行版」,以及「是否启用了集成」。
真正决定 Docker 能不能跑起来的,是以下三点:
- Docker Desktop 设置里勾选了
Enable WSL integration - 该设置下方的发行版列表中,至少有一个发行版的开关是打开的(哪怕只是
Ubuntu-22.04) - 那个被启用的发行版,在
wsl --list --verbose中 VERSION 必须是2
如果 docker info 报错或卡住,或者 docker run hello-world 失败,优先回去查 wsl --list --verbose,而不是盯着 docker info 的字段猜。
发行版升级失败时,wsl --set-version 的坑点
执行 wsl --set-version Ubuntu-22.04 2 后提示 Conversion in progress 却长时间不动,或直接报错,大概率是以下原因:
- 发行版正在运行中:先执行
wsl -t Ubuntu-22.04终止它,再重试 - 磁盘空间不足(尤其是系统盘):WSL2 升级需要临时空间解压内核镜像,C 盘剩少于 5GB 就容易卡死
- 发行版名称拼错:用
wsl --list看准全名,注意大小写和连字符,比如Ubuntu-22.04≠ubuntu-22.04 - 内核更新包没装:即使 WSL 功能开了,也必须手动安装 WSL2 Linux kernel update package,否则升级会静默失败
Docker Desktop 设置页显示 “You don’t have any WSL 2 distros installed”
这个提示不是误报,而是 Docker Desktop 在启动时主动扫描 WSL 注册表后的真实反馈。它只认 VERSION = 2 的发行版,哪怕你有十个 WSL1 发行版,它也当不存在。
解决路径很窄,只有三步:
- 确认
wsl --list --verbose至少有一行 VERSION 是2 - 打开 Docker Desktop → Settings → General → 勾选
Use the WSL 2 based engine - 再进 Resources → WSL Integration → 找到那个 VERSION=2 的发行版,打开右侧开关
如果设置页里根本找不到那个发行版名,说明它没被正确注册进 WSL 系统 —— 此时不要反复点“Apply”,先回到终端运行 wsl --unregister Ubuntu-22.04,再用 Store 重装一次。











