WSL 2 核心架构:Linux 内核 + 轻量 VM + Windows/WSL 集成。从 2.9.x 开始,最大的变化其实是 WSL 开始原生加入容器运行能力。
微软近期发布 WSL 2.9.9 预览版。这个版本最大的看点并不是 WSL 本身的基础能力变化,而是微软继续完善 wslc——一套运行在 WSL 环境中的容器命令行工具,并持续向 Docker 的使用习惯靠拢。微软官方 WSL 项目本身仍定位于让 Windows 直接运行 Linux 工具和应用。
2.9.9 首先改善了 wslc logs 的时间参数解析。--since 和 --until 开始更统一地支持 epoch 秒、Go duration、日期以及带时区的 RFC3339 时间。对于自动化脚本而言,这意味着不同时间格式带来的歧义进一步减少,生产环境更推荐直接使用带时区的 RFC3339。
其次,wslc volume list --format json 的 JSON 输出更加接近 Docker CLI,字段从较少的基础信息扩展到包含 Availability、Labels、Mountpoint、Scope、Size、Status 等字段。对于按照字段名读取数据的程序影响较小,但如果 CI 脚本通过完整 JSON 快照做严格匹配,则需要重新检查测试。
另一个重要变化是容器生命周期管理。微软重构了相关状态机,重点修复 run、stop、rm 并发操作可能导致的卡顿问题。这类修改看似不显眼,却直接关系到自动化环境中的稳定性。
网络方面,GNS 回调处理也更加严格:Linux 侧网络失败不再被静默吞掉,而是显式暴露并触发重试。因此,如果升级后镜像网络、VPN、DNS 等组合场景出现错误,更应该理解为旧配置问题被暴露,而不是简单归因于“2.9.9 把网络搞坏了”。
从产品方向看,wslc 的意义比这几个修复更值得关注。微软正在把 WSL 与 OCI 容器运行能力进一步整合,让开发者在不安装 Docker Desktop 的情况下,也能获得相对熟悉的容器 CLI 体验。不过,目前它仍不能视为 Docker Desktop 的完整替代品,社区仍在提出 docker info、container cp 等兼容性需求。
| 阶段 | 核心变化 | 本质 |
|---|---|---|
| WSL 1 | Linux syscall → Windows syscall | Linux 兼容层 |
| WSL 2 | 真正 Linux Kernel + VM | Linux 虚拟化 |
| 2.0~2.3 | 独立版本、systemd、WSLg 等 | 开发环境 |
| 2.4~2.6 | 网络、DNS、GPU、VM、文件系统持续增强 | 开发平台 |
| 2.7 | 基础设施稳定性继续增强 | Linux runtime |
| 2.9 | WSLC / wslc |
容器平台 |
| 未来方向 | Linux + Containers + Windows 集成 | Windows 开发基础设施 |
PS:WSLg 是用于运行 Linux GUI 应用(作为一个 Windows 窗口),支持 X11 和 Wayland。体验方面也在不停改进,已经非常成熟了,比如开始菜单、任务栏、剪切板、GPU 加速、多显示器等都已经支持。