微软 WSL 容器:让 Windows 无缝调用 Linux 代码,开启开发新体验! 能否在 Windows 应用中使用 Linux 代码现在可以了如果你能在不修改代码的情况下将 Linux 代码用于 Windows 应用程序中会怎么样呢现在你可以做到了。Windows 运行容器难题待解在 Windows 上运行容器从来都不是一件容易的事。虽然有支持 Windows Subsystem for Linux (WSL) 和 Hyper-V 的 Docker Desktop 和 Podman 版本但发现它们都过于复杂且不稳定。即便它们能正常工作使用 Linux 虚拟机来托管容器的 Hyper-V 也是最佳选择。但这一切都会带来额外开销多层虚拟基础设施会阻碍工作而且每次重启电脑都需要重新构建。问题的部分原因在于 WSL。它是个不错的工具但 WSL2 的文件系统集成速度较慢你只能通过 Visual Studio Code 的远程集成来处理代码这意味着要在每个正在构建和测试的容器中安装 VS Code Server。如果你使用 Kubernetes管理的复杂度会更高让你无法专注于代码。最后只能在另一台运行 containerd 的 Linux 服务器上进行大部分容器测试和开发。虽然这样能行得通且拥有工作站级设备的所有资源但它不便于携带而且不知为何Ubuntu 的远程桌面访问对来说也无法使用。微软 Build 大会带来转机好在微软在 2026 年的 Build 大会上围绕 WSL 发布了多项公告旨在让 Windows 重新成为开发者平台。第一项是改进后的 WSL3还需要一段时间才能推出第二项是 WSL 原生容器支持已于 6 月底发布。目前社区已经开始开发类似 Docker Desktop 的工具以帮助监控和管理容器。推出基于 WSL 的容器平台与 Build 大会上其他以开发者为中心的 Windows 公告相契合。让 Windows 更像 Linux是微软对开发者需求的回应毕竟 Azure 上超 50% 的服务器运行的是 Linux 发行版。Linux 是云原生基础设施的基础所以开发者无论身处何地都需要能够基于它进行开发。开启 WSL 容器之旅WSL 容器提供了一个新的命令行界面CLI可与熟悉的 WSL 并行工作其命令支持从创建到关闭的整个容器生命周期。要开始使用你只需将 WSL 安装升级到当前的预发布版本撰写本文时为 2.9.3。只需打开管理员 PowerShell 终端输入 wsl --update --pre-release即可下载并安装最新的 WSL 版本。关闭并重新打开终端以确保更新了上下文后输入 wslc 来检查 WSLC 是否已安装它会列出可用的命令。如果你想将容器工作与 WSL 分开并避免可能意外影响 WSL 安装的输入错误新的 CLI 也可作为 WSL 容器的别名。微软的底层创新微软利用 WSL 容器在 Windows 中试验 Linux 的新集成点。一个关键变化是使用了新的文件系统显著加快了容器内对 Windows 的访问速度。另一项改进是为 WSL 容器提供了新的网络模式可直接通过 Windows 网络栈中继网络连接确保其能访问与 Windows 相同的资源和安全设置。在 Windows 应用程序中调用 Linux 容器当你开始在 Windows 代码中使用 WSL 容器 API 时事情就变得更有趣了。你可以在桌面应用程序中调用 Linux 容器利用现有服务在 CI/CD 管道中构建和部署容器。新的文件系统和网络栈有助于减少跨越两个平台边界时产生的摩擦。WSL 容器 API 以 NuGet 包的形式提供支持 C、C# 和 C。它允许你的代码启动和停止容器并直接与之交互发送命令行调用并读取响应。有趣的是你可以从代码中启动一个容器化服务并在本地网络端口上公开其 REST 或 gRPC API。微软提供了示例代码展示了在这个早期阶段的可行性。微软正在进行一场革命。它将云原生、服务驱动的模式引入 Windows并利用它弥合数十年的差异化发展。你无需重写在 Linux 上运行的服务只需将服务容器化然后通过 WSL 容器 API 启动它。完成后API 会自动清理关闭容器并回收其使用的内存。需要记住的是这只是一个快速发展平台的首次公开预览。这里有很多机会比如基于为 WSL1 开发的系统调用转换层创建一个原生的 Windows 到 Linux 应用程序集成栈消除使用基于 Web 的服务调用的开销。未来的发展值得期待而这个首次发布确实非常有趣。在 Windows 上管理 Linux 容器如果你想在 Windows 开发硬件上获得类似 Docker Desktop 的容器构建和测试体验可能不用等太久。WSL 容器的底层 API 已经被用于开发管理和监控容器的工具。其中一个工具是 WSL Container Desktop正在 GitHub 上进行开发。虽然目前还没有发布版本但通过克隆源代码仓库并使用.NET CLI 进行构建就可以轻松编译并运行。你需要安装 Windows App SDK有些功能还需要访问 Azure CLI。WSL Container Desktop 采用 C# 编写拥有 WinUI 前端。目前仅在 x64 上进行了验证但在 Arm64 电脑上也能编译并运行它用于测试和运行容器。运行后它为 WSL 托管的容器提供了一个设计精良的前端显示正在运行的容器及其使用的资源。你可以将 WSL Container Desktop 连接到 Docker 和 Azure 等容器注册表以便快速拉取基础容器然后使用 WSL 容器环境添加自己的代码和自定义设置。主要交互界面是 WSL Container Desktop 仪表盘它显示正在运行的容器及其当前资源使用情况。界面元素以卡片形式展示借鉴了 Windows 自身的用户界面尤其是其设置应用。从仪表盘你可以深入了解可用的容器具备快速启动、停止和重新加载选项还有扩展功能包括在浏览器中打开相应端口。用一个包含完整 KDE 网络桌面的容器进行了测试让能在浏览器中运行一个 Linux 发行版容器。其他选项包括详细视图可显示当前日志并提供检查容器状态的工具。在调试和测试容器应用程序时这类工具很有用因为它能提供 WSL 容器 CLI 所没有的见解。还有一个选项可帮助你在下载完镜像且不再需要时进行清理通过分析显示最大的镜像和一段时间未使用的镜像。除了处理 WSL 容器的工具外WSL Container Desktop 还提供了一个基本的设置工具可帮助你配置其外观和与 Windows 的集成方式。在 Windows 中运行 Kubernetes 进行云原生开发WSL Container Desktop 一个更实用的功能是能够在 WSL 中快速搭建一个 K3s Kubernetes 实例用于托管 WSL 容器为你提供一个本地环境随时随地构建和测试云原生应用程序。K3s 工具提供了与 Kubernetes 项目自身的 Headlamp UI 类似的体验让你可以轻松在开发环境和生产 Kubernetes 集群之间切换。可以说WSL 容器是那种你原本以为不需要但现在却离不开的 Windows 功能之一。它简化了在 Windows 中构建容器开发工具链的过程同时让你能够考虑新一代的混合应用程序充分利用 Windows 和 Linux 数十年的开发成果。结果是几年前难以想象的将 Linux 容器嵌入 Windows 应用程序中并将其视为另一个本地服务。随着 WSL 容器平台的发展你有望看到更多将 Linux 和 Windows 结合的方式利用容器打造一个兼具两者优势的混合平台。分类开发工具、软件开发、Kubernetes 与容器、云原生、云计算

本月热点