38

Docker迎来 Windows Subsystem for Linux 2

 4 years ago
source link: https://www.tuicool.com/articles/i2yyyaI
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【编者的话】Docker已经意识到,微软方面刚刚推出的Windows Subsystem for Linux 2已经让Windows系统在Docker以及Windows/Linux平台容器开发者群体当中获得了惊人的吸引力。

Windows Subsystem for Linux 2(WSL2) 已经将Linux内核引入Windows系统。有些朋友可能会问,单单因为WSL确实在模拟Linux方面表现出色,就值得我们给予关注吗?呃……没错。根据Docker公司高级软件开发者Simon Ferquel的观点,单凭这一点就足够了。

在一篇工程博文当中,Ferquel解释称,凭借一己之力将容器技术推向主流的Docker公司正着手将其Docker Desktop开发平台for Windows从全Hyper-V转换为更加轻量化的WSL2 Hyper-V虚拟机。

理由是什么?Ferquel写道,这是因为微软“实际上提供了一套能够真正在轻量级虚拟机当中运行的Linux内核……其比Windows所提供的内核更加轻,与Windows集成效果更紧密,Docker守护程序能够在其中运行良好并获得卓越的性能表现。”

那么效率如何?Ferquel宣称,冷启动条件下WSL2与Docker守护程序的速度“迅如奔雷——在我的开发笔记本上能够在2秒内完成启动;相比之下,目前的Docker Desktop版本启动需要数十秒。”

大家觉得这算快吗?反正Docker认为这是相当的快。

然而,转移至WSL2的决定仍然经历了一定探讨。Docker方面测试了早期WSL2的多个build,并对多种方案进行了原型设计。现在,更新更快的Docker Desktop正在开发人员的手中逐步成型。

Docker还将利用WSL2集成包取代原本的Hyper-V VM。其将具有与当前Docker Desktop相同的功能,具体包括Kubernetes一键设置、自动更新、透明HTTP代理配置、访问Windows中的守护程序以及透明绑定Windows文件挂载等等。

真正令Docker开发者们感到振奋的是,他们将能够同时开发Windows与Linux版本的容器化程序。Ferquel宣称这将给面向Linux环境的项目或者Linux定制型build流程的开发者群体带来巨大的推动作用。这意味着大家不再需要分别构建Linux与Windows版程序的维护脚本!举例来说,Docker开发人员现在可以与Linux平台上的开发者使用相同的一组工具及脚本,并直接在Windows之上运行Linux Docker守护程序。

他同时宣称,WSL的绑定挂载还将具有与本机Linux设备几乎完全相同的I/O性能。这将直接解决Docker Desktop面临的主要痛点之一——I/O密集型工具链。NodeJS、PHP以及其它Web开发工具都将从这一改进中受益。

当然,困扰旧版Docker Desktop的绝不只有性能问题。可以肯定地讲,Windows文件绑定挂载的可靠性已经无法满足要求。“目前的实施方案依赖于Samba Windows服务,但该服务可能被停用、可能被企业GPO阻止、被第三方防火墙阻止等等。Docker Desktop配合WSL 2将带来一种新的Windows文件绑定实现方式,从而提供开箱即用且「丝般顺滑」的使用体验。”

除此之外,“与Visual Studio Code的「Remote to WSL」相结合,Docker Desktop Linux工作区将能够运行完整的Linux工具链,从而通过Windows系统中的IDE在本地计算机上构建容器。”

那么,速度提升到底源自何处?

首先,WSL 2运行在面向Windows的原生Linux 4.19内核之上。初代WSL需要先将Linux系统调用转换为相应的Windows API;相比之下,WSL 2则能够在轻量级Hyper-V VM当中运行Linux,因此不会因系统调用转换而带来任何性能损失。

另一大重要性能提升来源则在于Linux文件系统,也就是目前广泛使用的Linux EXT4文件系统。此前,系统必须将文件I/O调用转换为Windows NTFS格式。为了实现文件系统桥接,微软公司决定使用一套性能出众的传统解决方案: Plan 9文件系统协议(简称9P)9P网络文件系统服务器 允许各操作系统顺畅对接彼此之间的不同文件系统。

此次转换带来的最终结果,就是让用户能够在Linux与Windows上获得各自原生文件系统的I/O性能。

当然,如今讨论这一切可能为时尚早。毕竟Docker Desktop for WSL 2技术预览版还没有实际发布,预计将在今年7月开放下载。Docker方面承诺其将能够与现有Docker Desktop版本并行运作,因此大家可以继续安全地推进现有项目的开发工作。

如果新的Docker Desktop真的能够践行这些承诺,那么相信它必将成为涵盖Windows Server、Linux服务器、乃至全部云环境的至高Windows Docker开发平台。

原文链接: Docker embraces Windows Subsystem for Linux 2


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK