Docker迎来 Windows Subsystem for Linux 2

 Nicolas 译 分布式实验室

Docker迎来 Windows Subsystem for Linux 2

Docker已经意识到,微软方面刚刚推出的Windows Subsystem for Linux 2已经让Windows系统在Docker以及Windows/Linux平台容器开发者群体当中获得了惊人的吸引力。Windows Subsystem for Linux 2(WSL2)[1]已经将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)[2]。9P网络文件系统服务器[3]允许各操作系统顺畅对接彼此之间的不同文件系统。
此次转换带来的最终结果,就是让用户能够在Linux与Windows上获得各自原生文件系统的I/O性能。
当然,如今讨论这一切可能为时尚早。毕竟Docker Desktop for WSL 2技术预览版还没有实际发布,预计将在今年7月开放下载。Docker方面承诺其将能够与现有Docker Desktop版本并行运作,因此大家可以继续安全地推进现有项目的开发工作。
如果新的Docker Desktop真的能够践行这些承诺,那么相信它必将成为涵盖Windows Server、Linux服务器、乃至全部云环境的至高Windows Docker开发平台。
相关链接:

  1. https://www.zdnet.com/article/hell-freezing-over-microsoft-releases-its-own-linux-for-windows/

  2. https://wiki.tcl-lang.org/page/9P+%28Plan+9+Filesystem+Protocol%29+VFS

    https://nelsonslog.wordpress.com/2019/02/16/plan-9-rides-again-wsl-file-access/


原文链接:https://www.zdnet.com/article/docker-embraces-windows-subsystem-for-linux-2/


上一篇:mysql-面试-DQL


下一篇:单例(创建型模式)