WSL 容器完整指南:Windows 上 Docker 的原生替代方案

  • 使用 wslc.exe CLI 和面向开发人员的可编程 API 实现原生 Linux 容器层。
  • Hyper-V 微虚拟机架构可确保更卓越的隔离性和更高效的资源管理。
  • 通过直接集成到 Windows 11 生态系统中,消除对第三方商业许可的依赖。

现代开发环境,笔记本电脑上显示用于在 WSL 容器中进行编程的代码编辑器。

如果你从事开发工作,你肯定知道在 Windows 上搭建 Linux 环境一直以来都比较繁琐,或者依赖于一些体积庞大的外部工具。不过,微软推出的WSL Containers彻底改变了这一现状。这项功能让我们能够原生管理 Linux 镜像和容器,无需再像 Docker Desktop 那样繁琐地配置,也无需支付其复杂的企业版许可费用。

这款工具并非简单的更新,而是 Windows 处理虚拟化方式的一次范式转变。通过将容器直接运行功能集成到Windows 子系统 Linux 版 (WSL)中,其目标是创建一个更加流畅的工作流程,消除不必要的层级,使开发人员能够专注于编写代码,而无需费心配置操作系统。

Linux
相关文章:
Linux 正在成为电信和云计算领域无形的支柱。

WSL容器究竟是什么?

专业程序员,从事基于 Linux 的 Windows 子系统 (WSL) 应用程序开发。

简而言之,这是 WSL 的一项新功能,允许您创建和启动 Linux 容器,而无需外部守护进程。其核心是wslc.exe,这是一个设计直观的命令行界面,尤其适合熟悉 Docker 的用户,因为它们的命令非常相似。事实上,为了避免任何混淆,微软还提供了一个名为container.exe 的别名。

但这不仅仅关乎控制台。他们还发布了一个可通过 NuGet 包获取的WSL 容器 API。对于那些开发原生 Windows 应用程序(使用 C#、C++ 或 C)并希望程序内部管理 Linux 容器的开发者来说,这简直是福音。这些容器可以处理输入/输出(stdin/stdout)、网络挂载,甚至可以直接访问 GPU以使用 PyTorch 执行 AI 任务。

与 Docker Desktop 的主要区别

数据中心中的服务器基础架构,代表 Windows 11 上的 Hyper-V 虚拟化

很多人会问,WSL 容器是否会取代 Docker Desktop?简而言之,在很多情况下,答案是肯定的。Docker 通常使用单个共享的 Linux 虚拟机来运行所有程序,而 WSL 容器则为每个容器启动独立的 Hyper-V 微型虚拟机。这意味着每个进程都有自己的内存和存储预算,从而防止容器之间相互“窥探”,提高了安全性。

另一个关键点是成本。Docker Desktop 需要向大型企业付费,而 WSL 容器则包含在 Windows 11 中,无需额外付费。但是,需要注意一个重要细节:您需要Windows 11 专业版、企业版或教育版,因为家庭版不支持 Hyper-V 隔离,而 Hyper-V 隔离是所有这些功能正常运行所必需的。

Yocto 项目是什么?
相关文章:
Yocto 项目是什么:完整的嵌入式指南

如何逐步启动并运行

监视器上显示了详细的代码行,演示了如何使用 wslc.exe 命令行界面管理容器。

如果您想开始尝试,首先要确保您的 WSL 版本为 2.9.3 或更高版本。由于它仍处于预览阶段,您需要以管理员身份打开终端并运行命令`wsl --update --pre-release` 。更新完成后,您可以通过运行`wsl --install-feature containers`来启用该功能。

要检查一切是否正常,只需输入 wslc version如果您想顺利启动您的第一个容器,请尝试使用 wslc run --rm hello-world你会看到图像自动下载并显示欢迎信息,确认系统运行正常。从这里,你可以使用如下命令: wslc 容器 ps 看看有什么生物或 wslc 图像 ls 查看本地图像。

创建您自己的图像并优化工作流程

灯光照射下的服务器机架象征着WSL微型虚拟机的效率和隔离性。

如果你想更进一步,理想的解决方案是使用带有 WSL 扩展的Visual Studio Code 。要创建自己的镜像,你需要一个名为Containerfile 的文件(与 Dockerfile 非常相似),并参考优秀的编程书籍来构建你的应用程序。例如,如果你要构建一个 Django 应用程序,你需要定义 Python 镜像,复制依赖项,并开放 8000 端口。

编译过程很简单:你使用 wslc build -t your-app-name . 然后你用它启动它 wslc run -d -p 8000:8000 --name mi-app nombre-de-tu-app最强大的地方在于你可以将它整合到 MSBuild 或 CMake使容器创建成为项目构建过程的一部分。

什么是 OpenEmbedded
相关文章:
OpenEmbedded 是什么以及它如何改变嵌入式 Linux 开发

性能、网络和存储

微软的改进远不止于此。他们已将virtiofs设置为默认文件系统,这显著提升了 Windows 和 Linux 之间的数据传输速度,彻底解决了恼人的挂载速度瓶颈。此外,还有一种名为consomme 的实验性网络模式,对于企业用户来说堪称福音,因为它能够更智能地路由流量,从而解决与企业 VPN 的常见冲突。

在资源管理方面,该系统会更积极地向主机释放内存。由于它们是轻量级虚拟机,因此当您停止容器时, 内存恢复速度更快 比单体式模型更高效。为了保持磁盘清洁,请不要忘记使用 wslc container prune y wslc image prune 删除不再使用的内容。

这项技术通过将容器化直接集成到 Windows 11 核心中,实现了重大飞跃,使开发人员能够摆脱第三方软件,并通过 Hyper-V 隔离和 virtiofs 系统优化性能。随着 wslc.exe 命令行界面和 VS Code 兼容性的推出,一个强大、免费且高效的环境得以建立,简化了 Linux 工作负载的运行,但要充分发挥其功能,需要使用专业版 Windows。


在 Google 中将其添加为首选来源