设为首页 收藏本站
查看: 1172|回复: 0

[经验分享] Windows Docker原理的大胆猜测和深入分析

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-22 09:00:18 | 显示全部楼层 |阅读模式

前言:这篇文章最初由盆盆发表在华来四微信公众号(微信号:sysinternal)。虽然Windows Docker要等到微软Build大会时才能看到实例演示,但这并不妨碍我们利用手头拥有的公开材料对其进行大胆猜测和深入分析。对于盆盆来说,猜测的过程甚至比谜底揭晓更有乐趣!

大家知道,Docker相对虚拟机,属于轻量级应用方案。就好比图中的这个创意便携打印机,不需要把功能封装在笨重的传统打印机里。Windows Docker也是这样,不需要把应用封装在笨重的虚拟机里,以节省资源以及提高性能。

盆盆发表过一篇Windows Docker和Nano Server的文章,您可以在公众号里回复docker6阅读这篇文章(在微信里关注公众号:sysinternal)。

虽然Windows Docker要等到微软Build大会时才能看到实例演示,但这并不妨碍我们利用手头拥有的公开材料对其进行大胆猜测和深入分析。对于盆盆来说,猜测的过程甚至比谜底揭晓更有乐趣!

我们可以从很多公开的资料里猜测Windows Docker技术有可能就是所谓的DrawBridge(虽然微软官方并没有确认),例如以下的公开报道。所以我们的目的就来看看这个DrawBridge到底是什么原理。

http://t.cn/RAN9Y9h

当然猜测归猜测,还必须以事实为准绳。庶不负胡适先生“大胆假设,小心求证”的教导(今年盆盆还拜谒过胡适先生墓)。

那么盆盆用来小心求证的论据是什么?

求证论据

这是微软研究院公开的一篇有关DrawBridge的论文《Rethinking the Library OS from the Top Down》,其PDF文档下载地址如下:

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大会过后,华来四会第一时间奉上最新的深入分析。


最后请容盆盆得瑟一下,前天花了200大元从网上买了一个可折叠的钢架电脑桌,直接放在空调正下方,避免夏天时被空调直接吹到而引起感冒,等于是降低受攻击面、提高可工作时间。同时可折叠还能节省空间。注意我说的不是Windows Nano Server哈!



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-59462-1-1.html 上篇帖子: docker高级应用之资源监控 下篇帖子: exec format error Windows
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表