WLS 是 Microsoft 开发的一个兼容层,用于在 Windows 上本机运行 Linux 可执行文件。
微软最近宣布 WSL 3.0 正式发布,此次更新将 Windows 定位为基于容器和 AI 的工作负载的综合开发平台。
此版本的主要创新之处在于引入了“wslc”(WSL 容器)命令行工具及其内置别名“container.exe”。该实用程序以及与之兼容 C++ 和 C#/WinRT 的配套 SDK API,使开发人员和原生 Windows 应用程序能够创建、运行和管理 Linux 容器,而无需依赖第三方虚拟化环境。
WSL 3.0主要新特性
wslc 工具涵盖容器的整个生命周期,支持创建、启动、停止、导出和检查系统镜像等操作,并可限制分配给每个实例的 CPU 和内存资源。在网络方面,新版本支持创建自定义虚拟网络、将容器连接到多个网络以及端口转发。此外,开发人员还可以与虚拟硬盘 (VHD) 交互、配置默认存储路径,并在已挂载的 Linux 容器内直接共享 Windows 目录。
为了便于分析和观测,WSL 3.0 引入了“wslc logs”命令和实时事件监控功能,可提供容器活动日志的详细统计信息和突出显示的输出。此外,它还允许非特权用户从容器内部访问图形处理单元 (GPU),从而增强了操作系统级别的集成,并能够加速 AI 模型和本地开发的图形工具的执行。
隔离和优化网络
与传统的虚拟化架构不同, WSL 3.0 使用Windows 服务“ wslservice.exe ”的提升权限来部署容器。但是,为了确保隔离性,该服务会生成名为“wslcsession.exe”的辅助进程,这些进程以当前系统用户的权限运行。这些会话完全独立;每个会话都分配有自己的虚拟硬盘 (VHD),默认位于用户目录(“%AppData%\Local\wslc\sessions”)中。
网络性能和兼容性得到了提升,因为跨文件系统访问现在默认使用 virtiofs 技术,与传统的 Windows 文件访问相比,其读写速度最高可提升两倍。
在通信方面,引入了“消费”网络模式。该模式通过将 Linux 网络流量直接路由到 Windows 网络接口来提高互操作性,从而使容器应用程序能够与现有的虚拟专用网络 (VPN)、企业代理和企业安全策略无缝交互。
为了促进 WSL 3.0 在生产环境中的部署,微软通过 Microsoft Intune 和 Microsoft Defender for Endpoint (MDE) 实施了治理控制。IT 管理员现在可以使用 MDE 监控 WSL 容器内的进程、网络和文件,并将这些活动与宿主系统关联起来,从而进行统一的安全分析。此外,Intune 策略允许禁用对容器的访问或配置“日志记录权限列表”,强制开发团队仅从经过验证的存储库拉取镜像。
得益于社区的贡献,与 wslc 兼容的工具生态系统正在迅速扩展。Visual Studio Code 编辑器现在通过其“Dev Containers”扩展程序支持 wslc 作为其默认驱动程序,从而简化了远程编译源代码的过程。
同样,像 Aspire 这样的工具也可以使用 WSL 3.0 作为其主要运行时环境。除了命令行界面之外,开发人员还可以使用可视化应用程序(例如基于终端的“Lazywslc”和“WinUI 3 WSL Container Desktop”桌面应用程序)来管理本地基础架构,或者通过 WSL 上托管的 Linux 发行版中的脚本远程调用命令。未来,微软计划通过发布对 wslc compose 编排的全面支持来扩展此生态系统,从而实现与现有行业标准 compose.yaml 文件的直接兼容。