WSL Containers 预览版来了:在 Windows 上直接跑原生 Linux 容器

2026-06-30 38 预计阅读时间: 1 分钟
来源: oschina.net AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:7 分钟

微软发布了 WSL Containers(WSLC)的首个公开预览版。它把“原生 Linux 容器”这件事直接带进 WSL:开发者可以通过 wslc 命令行工具创建、运行、启动、终止、导出、清理和检查容器,也可以用 C++、C#/WinRT SDK 把容器能力嵌进自己的工具链。

这不是又一个容器概念包装。它真正值得关注的地方在于:Windows 开发环境里,WSL 不再只是“跑 Linux 用户态”的入口,而开始具备更直接的容器生命周期管理能力。

wslc 把容器操作放进 WSL 的日常工作流

这次预览版的核心入口是 wslc。从摘要看,它覆盖了开发者最常用的容器生命周期动作:

  • 创建容器
  • 运行容器
  • 启动已有容器
  • 终止容器
  • 导出容器
  • 清理容器
  • 检查容器状态或元数据

这意味着你可以把一些原来需要完整容器运行时或额外桌面工具承载的工作,迁移到更贴近 WSL 的命令行流程里。比如本地构建、隔离运行测试、临时验证某个 Linux 用户空间环境,都可以围绕 wslc 组织脚本。

不过要注意:目前这是首个公开预览版。预览版适合验证开发流程、构建内部工具原型、评估性能和兼容性,不适合立刻承担生产关键链路。

按容器限制 CPU 和内存,适合做可重复测试

摘要中特别提到 WSLC 支持按容器设置资源限制,例如 --cpus--mem。这对本地开发很实用。

很多问题在“开发机资源无限开”时不会暴露:缓存膨胀、并发过高、内存峰值失控、测试进程把整台机器拖慢。按容器限制资源后,你可以更接近 CI 或线上小规格实例的运行条件。

可以这样实践:把服务测试放进一个资源受限的 WSLC 容器里,观察它在 2 个 CPU、1GB 内存下是否还能稳定完成启动和测试。

# 假设已经安装支持 WSLC 的 WSL 预览环境,并且 wslc 已在 PATH 中
# 将 my-dev-image:latest 替换为你的 Linux 容器镜像

wslc run \
  --name api-test \
  --cpus 2 \
  --mem 1g \
  my-dev-image:latest \
  /bin/sh -lc "python -m pytest -q"

# 查看容器信息,具体输出字段以当前预览版为准
wslc inspect api-test

# 测试完成后清理
wslc terminate api-test
wslc clean api-test

上面的命令重点不是镜像本身,而是把资源边界写进脚本。这样团队成员在不同 Windows 机器上运行测试时,至少 CPU 和内存条件不会完全失真。

SDK 让 WSLC 不只是命令行工具

这次预览版还提供了功能齐全的 SDK,覆盖 C++ 和 C#/WinRT。这个信号很重要:微软不只是给开发者一个 wslc 命令,而是把容器能力暴露给 Windows 应用和开发工具。

可以设想几类适合 SDK 的场景:

  • IDE 或编辑器插件:为某个项目一键创建隔离 Linux 环境
  • 企业内部开发平台:统一创建、导出、清理开发容器
  • 测试工具:在 Windows 上调度多个资源受限的 Linux 容器
  • 教学或实验环境:每个练习启动一个干净容器,结束后销毁

由于摘要没有给出 SDK 的具体 API 形态,下面用“伪项目结构”说明可以怎样组织封装。它不是官方 API 示例,实际调用需要以预览版 SDK 文档为准。

wslc-runner/
  src/
    ContainerProfile.cs      # 描述镜像、CPU、内存、启动命令
    WslcContainerRunner.cs   # 调用 C#/WinRT SDK 的封装层
    Program.cs               # CLI 入口

可以这样设计配置文件,让团队把容器参数提交进仓库:

{
  "name": "api-test",
  "image": "my-dev-image:latest",
  "cpus": 2,
  "memory": "1g",
  "command": "/bin/sh -lc \"python -m pytest -q\""
}

然后你的内部工具读取这份配置,并通过 SDK 创建和运行容器。好处是:业务仓库只关心“我要什么环境”,具体的 WSLC 调用细节集中在工具层维护。

和现有容器方案的关系:先当开发工具评估

WSLC 的出现并不意味着现有容器方案马上被替代。更稳妥的判断是:它给 Windows + WSL 开发者提供了一个新的低摩擦路径,尤其适合本地开发、测试隔离和工具集成。

采用时可以按这个清单推进:

  • 先在非关键项目里验证 wslc run、资源限制和清理流程
  • --cpus--mem 写进脚本,避免“只在我的机器上正常”
  • 检查镜像、文件系统挂载、网络行为是否满足现有开发流程
  • SDK 集成先做薄封装,避免过早绑定预览版 API 细节
  • 不要把预览版用于生产发布链路,除非你已经接受 API 和行为变化风险

WSL Containers 最值得期待的地方,是它把 Windows 开发机上的 Linux 容器体验拉近了一层。对每天在 Windows、WSL、Linux 工具链之间切换的团队来说,这个预览版值得尽早试跑,但也应该用预览版应有的谨慎来落地。


相关推荐