第 1100 期:微软刚刚发布了升级版 WSL 来运行 Linux 容器

第 1100 期:微软刚刚发布了升级版 WSL 来运行 Linux 容器

作者:BlogUpdater |  时间:2026-10-01 |  浏览:39 |  评论已关闭 条评论

近日,微软将 WSL 容器(WSL Containers)从公开预览版中移出,现在,任何可以运行 wsl –update 命令的用户都可以使用。在 9 月 29 日的公告中,Windows 平台开发企业副总裁 Logan Iyer 确认,最新的 WSL 版本内置了 wslc.exe 和 WSL 容器 API。

在此之前,需要使用 Linux 容器的 Windows 开发者,通常要么安装 Docker Desktop,要么在 WSL 发行版中手动设置 Docker 引擎。WSL 容器则把微软的容器工作流程带进了 WSL。

我们在七月份测试了 WSL 容器,当时它还处于预览阶段,当时,我们构建了一个自定义的 Linux 容器,通过它运行了一个 Flask 应用,也可以从 Windows 通过 localhost 访问。一切都运行得很好。

但是,请注意,这不是 WSL 3。今年早些时候,微软已经否认了 WSL 3 的传闻,不过有趣的是,GitHub 上的公开发布版本实际上是 WSL 3.0.1。

WSL 容器是一个命令行工具(CLI)和 API,而不是 WSL 的新版本

第一部分是 wslc.exe,这是一个命令行工具,可以从 Windows 构建、运行、管理和部署 Linux 容器。微软还提供了 container.exe 作为别名,对熟悉 Docker 的人来说会很容易上手。

wslc run –rm -it ubuntu:latest

wslc image ls

第二部分是 WSL 容器 API,它让原生 Windows 应用可以在代码中创建和控制 Linux 容器。它随 Microsoft.WSL.Containers NuGet 包一起提供,带有 C# 和 C /WinRT 投影,并支持标准输入输出、文件挂载、网络和 GPU 访问。

WSL 容器正式可用意味着什么?

Craig Loewen,微软负责 WSL 的高级产品经理,解释了 “正式可用(GA)” 的实际意义。他写道:“它现在已经从预览阶段移出,是‘大家都能获取的 WSL 版本’,并且可以用于完整的开发和生产场景。”

不过,“原生” 并不意味着这些容器在 Windows 内核上运行。它们实际上是在 WSL 的虚拟机基础设施中的 Linux 内核上运行的。

微软构建 WSL 容器的方式跟普通的 WSL 不一样

微软的高级软件工程师 Pierre Boulay 在 9 月 29 日发布了一篇关于 WSL 容器架构的深度解析。

在普通的 WSL 里,应用会和 wslservice.exe 通讯,这是一个有特权的 Windows 服务,负责创建虚拟机。而对于 WSL 容器,这个服务不会一直掌控虚拟机。它会创建一个名为 wslcsession.exe 的子进程,代表用户运行,负责创建容器、挂载目录和绑定网络端口。

微软表示,这让每个会话的隔离更强,因为会话运行在独立的进程中,并且安全性更高,因为会话操作运行的权限比 wslservice.exe 少。

每个会话都有自己的 VHD,存储在 %AppData%\Local\wslc\sessions 下。容器可以通过卷挂载使用 Windows 文件夹,微软通过 virtiofs 将这些文件夹共享到虚拟机中。据 Boulay 说,“相比 plan9,virtiofs 速度大概快一倍”,而 plan9 是普通 WSL 发行版用来访问您电脑 C 盘的方式。需要本地 Linux 文件系统或大小限制的容器可以使用基于 VHD 的卷。

WSL 正式版发布带来了新命令和一个叫做 “Consommé” 的网络模型

正式发布版本新增了 wslc 容器重启、使用 cp 复制文件、wslc 网络连接和断开、wslc 网络创建的额外驱动选项、容器健康检查,以及 wslc create 和 wslc run 的 –mount 支持。

网络部分有了更有趣的变化。在 Consommé 下,来自 Linux 虚拟机的所有流量,都会作为以太网帧进入 virtio 队列,而一个以用户身份运行的 Windows 进程会处理 DNS 查询、路由 TCP 和 UDP 流量,以及端口映射。

由于流量看起来就像是普通的 Windows 进程发送的,微软表示,它与 VPN 和防火墙的兼容性要好得多,而这些一直是 WSL 用户多年来的一个难题。在我们七月份的测试中,容器中的 Flask 服务可以从 Windows 通过 127.0.0.1:5000 访问,无需额外的网络设置。

WSL 容器终于可以用于企业了

IT 管理员应该注意的是,随着正式发布,Microsoft Intune 可以开启或关闭 WSL 容器,并限制镜像拉取到批准的注册表列表。

Microsoft Defender for Endpoint 现有的 WSL 集成现在也支持容器,能够显示容器内的进程、文件和网络活动,并将其关联回 Windows 主机。

我们发现,微软正在使用组策略、注册表允许列表和 Defender 来构建这个功能,而正式发布版本确认,这些部分已经准备好了。Loewen 在一个短视频中表示,这个功能 “完全与 Intune 以及 Microsoft Defender for Endpoint 集成,为你提供所需的控制,确保在企业环境中安全使用。”

VS Code Dev Containers 可以使用 WSL 容器,但有一些小问题

微软的发行公告称,VS Code Dev Containers 扩展可以使用 wslc 作为其容器驱动,而 VS Code Containers 扩展和 Aspire 也支持它。

当一名用户向 Loewen 询问 VS Code 设置指南时,他说 “应该只需要在设置中将 ‘wslc’ 设为所选二进制文件就可以了。” 然后用户 Neil Enns 报告称,即使将扩展从预览版切换到正式版,Dev Containers 仍然提示找不到 “docker” 命令。也就是说,集成功能已经上线,但您的编辑器设置可能仍需要一些排查。

微软已经在开发 wslc 的 compose 功能

“我们对 WSLc 最期待的功能是增加 compose 支持,这将是我们下一轮迭代的重点”,微软表示。

Compose 允许开发者用一个 compose.yaml 文件描述多个相关容器,比如前端网页、后端 API、数据库和缓存,并通过一个命令启动整个服务堆栈。在我们七月份的测试中,缺少 Compose 是为什么多容器项目中我们必须一个一个启动每个容器的原因。

微软的目标是 “wsl compose up 可以使用现有的 compose.yaml 文件,且无需修改”,Loewen 在社交媒体上确认,这在开发计划中。Compose 功能也在 GitHub 问题中有跟踪。

社区的解决方法和缺失的功能比如 –privileged

当一位开发者问到,wslc 是否可以在 WSL 发行版里构建并推送镜像时,Loewen 提到了 wslc-remote,这是他写的一个社区仓库。微软希望能原生支持它,但他说有 “很多难处理的边缘情况”,所以它仍然是一个社区项目,期望值参差不齐。

另一位用户表示,缺少 –privileged 支持迫使他们回到使用 Docker 来管理 kind 和 k3d Kubernetes 集群。Loewen 回复说,这个功能很快就会到来,并且因为已经在主分支上了,所以应该很快就能预览。

请记住,正式发布版并不意味着 wslc 能在每一个功能上都和成熟的容器平台完全匹配。

WSL 容器也能在 Windows 10 和 Windows Server 上运行

正如我们报道的,Windows 10 仍然在为开发者获取 WSL 功能。Loewen 在七月表示,WSL 容器 “在今天 WSL 支持的任何地方都能运行”,我们也在 Windows 10 上运行了 wslc,构建并提供了一个 Flask 仪表板。

在社交媒体上,当被问到,在 Windows Server 上 WSL 容器是否支持用于生产时,Loewen 说:“是的,这在生产环境中是支持的!”

Linux 正逐渐成为 Windows 的一部分

具有讽刺意味的是,多年前,Steve Ballmer 曾声称 Linux 为“癌症”,而现在微软几乎在把 Windows 11 变成一流的 Linux 容器主机。当微软发布自己的免费 Linux 发行版时,我们已经看到了这一点,而在 WSL 中添加容器工具也只是进一步巩固了这一趋势。微软意识到,没有 Linux,Windows 无法生存。

WSL 现在是开源的,微软不断改进 Windows 和 Linux 的文件访问及网络功能,有了 WSL 容器 API,Windows 应用可以运行 Linux 容器,而用户根本不需要考虑 Linux 的存在。

微软的发行公告中提到,Windows 上的 Linux 已经超越了开发环境,成为运行 AI 和云原生工作负载的平台。谷歌正在为其新 AI 工具带来原生的 Windows 11 和 WSL 支持,而 Ubuntu 在 Windows 11 上的增长速度比在原生 Linux 电脑上还快,所以,WSL 越来越把 Windows 开发者和 Linux 工具链连接起来。

是的,WSL 容器已经不只是一个有趣的预览版本了。通过 wsl –update,开发者可以获得一套官方的 CLI 和 Linux 容器 API,管理员则可以使用 Intune 和 Defender 进行管理。

我觉得,大多数用户并不能这么快就离开 Docker Desktop。Compose 还在计划中,一些高级场景仍然需要 Docker,并且第三方工具也很重要。我最感兴趣的部分是:wsl compose up,因为只要那天它能不改动地运行现有的 Compose 文件,很多开发者就终于可以卸载 Docker Desktop 了。

另外值得一提的是,如果您是一位高效能人士,拓扑梅尔智慧办公平台最近也更新到了最新的 6.0 版本,带来了诸如文件管理,个人工作台,文件秒搜,远程协助,音视频通话等功能,可以帮助您进一步提升日常工作效率。

您平常使用 WSL 吗?您觉得它还有哪些功能需要添加的?

本文来自:Microsoft’s then-CEO called Linux a cancer, and now Windows 11 ships Linux containers with upgraded WSL

标签:

评论已关闭。