前言:这篇文章最初由盆盆发表在华来四微信公众号(微信号:sysinternal)。虽然Windows Docker要等到微软Build大会时才能看到实例演示,但这并不妨碍咱们利用手头拥有的公开材料对其进行大胆猜想和深刻分析。对于盆盆来讲,猜想的过程甚至比谜底揭晓更有乐趣!docker
你们知道,Docker相对虚拟机,属于轻量级应用方案。就比如图中的这个创意便携打印机,不须要把功能封装在笨重的传统打印机里。Windows Docker也是这样,不须要把应用封装在笨重的虚拟机里,以节省资源以及提升性能。性能优化
盆盆发表过一篇Windows Docker和Nano Server的文章,您能够在公众号里回复docker6阅读这篇文章(在微信里关注公众号:sysinternal)。微信
虽然Windows Docker要等到微软Build大会时才能看到实例演示,但这并不妨碍咱们利用手头拥有的公开材料对其进行大胆猜想和深刻分析。对于盆盆来讲,猜想的过程甚至比谜底揭晓更有乐趣!网络
咱们能够从不少公开的资料里猜想Windows Docker技术有可能就是所谓的DrawBridge(虽然微软官方并无确认),例如如下的公开报道。因此咱们的目的就来看看这个DrawBridge究竟是什么原理。app
固然猜想归猜想,还必须以事实为准绳。庶不负胡适先生“大胆假设,当心求证”的教导(今年盆盆还拜谒过胡适先生墓)。ide
那么盆盆用来当心求证的论据是什么?性能
求证论据优化
这是微软研究院公开的一篇有关DrawBridge的论文《Rethinking the Library OS from the Top Down》,其PDF文档下载地址以下:ui
http://research.microsoft.com/apps/pubs/default.aspx?id=141071
这里是公开能够观看的Video:
http://channel9.msdn.com/Shows/Going+Deep/Drawbridge-An-Experimental-Library-Operating-System
以上两个资料都比较老,2011年,针对当时的Windows 7进行原理描述,并且还针对桌面应用(例如Excel进行描述),可是基本道理是不会变更太大的。
理论上来讲,桌面应用须要更多的进程间交互,例如Word可能须要经过OLE调用其它Office文档对象等。而服务端的应用之间的交互通常是经过网络来实现(例如虚拟机通常拥有完整的网络栈,以便能支持这种需求)。
大胆分析
视频里提到,相似Excel这样的用户应用程序,其API调用是经过用户模式的ntdll.dll来实现,由ntdll.dll再代为调用内核模式下的OS Kernel相关功能。而相似图形化界面、桌面、剪贴板等,则是经过用户模式下的Windows子系统(例如图中的user32.dll、gdi32.dll和kernel32.dll等),和内核模式下的win32k.sys来完成。
前面所述的PDF文档把传统的OS服务分为3个类别:用户服务、应用服务和硬件服务,用不一样的颜色灰度来表示。
视频里提到一个Library OS的概念,至关于给每一个进程“包”了一层很薄的"外皮"。其实质是给上述提到的两个重要的内核模式组件win32k.sys和OS Kernel提供了用户模式下的独立副本,其中对应win32k.sys的用户模式副本叫作win32k.dll,而OS Kernel的用户模式副本叫作NTUM(NT Kernel User Mode)。每一个Docker进程都有本身独立的Library OS,经过secmon(Secure Monitor)和Host OS内核进行交互。这大概就是其代号"DrawBridge"的由来吧。
和Linux Docker不同,Windows进程大多数有图形化界面,因此为了对其进行管理,咱们能够借助secmon中的RDP服务来实现,参考视频里的截图。这样的话,多个Windows Docker容器,能够经过RDP服务来共享Host上的图形化资源。固然我相信广大微软IT运维人员会愈来愈喜欢经过PowerShell对应用进行控管。
PDF文档里提到,Library OS所需的代码改动极小,在Windows 7的项目上只消耗了约2我的年的代价。这是一件好事情,越小的代码修改,意味着越稳定。
PDF还提到DrawBridge和虚拟机以及传统进程模式之间的比较。可见DrawBridge相对传统进程所增长的开销很是低,几乎能够忽略不计。
盆盆在前一篇文档里也提到Docker和其余应用封装模式的比较:
Hyper-V Container是怎么回事?
说实在话,盆盆手里也没有什么猛料,只能猜想它是整合了Hyper-V虚拟化和DrawBridge技术的容器。可能更加适合生产环境。既然是可选的部署模式,那么为了适合在Azure和其余Hypervisor上运行,Hyper-V Container必然能支持在虚拟化里的虚拟化(好拗口)。
一切得等待Build大会上的实况演示了。等Build大会事后,华来四会第一时间奉上最新的深刻分析。
本文所涉及的Windows内部原理,欢迎你们能够在公众号里回复课程2查看黄爱华老师的精品课程"Windows性能优化与蓝屏诊断"(须要在微信里关注公众号:sysinternal)。
最后请容盆盆得瑟一下,前天花了200大元从网上买了一个可折叠的钢架电脑桌,直接放在空调正下方,避免夏天时被空调直接吹到而引发感冒,等因而下降受***面、提升可工做时间。同时可折叠还能节省空间。注意我说的不是Windows Nano Server哈!