微软与VMware全面迎接并拓展Docker容器技术

标签:微软VMwareDocker容器技术

访客:34608  发表于:2015-08-26 10:13:53

微软与VMware全面迎接并拓展Docker容器技术

目前软件容器技术革命尚处于早期发展阶段,而微软公司正积极着手运用Docker容器机制及精简化操作系统帮助自家Windows Server堆栈同其它平台展开竞争。Linux早在起步阶段就作为现代分布式应用程序的根据地存在,而包括Docker、CoreOS rkt以及LXC Linux容器在内的各类相关方案皆立足于此。另外,红帽公司亦在主动将自家精简型Linux(名为Atomic Host)推向商业化市场,谷歌也拿出了开源Kubernetes容器控制系统。

面对服务器虚拟化老对手VMware,微软方面自然不甘示弱,双方正争相为Docker提供支持,同时推出用于承载容器化应用程序的精简操作系统。VMware公司目前已经有计划创建自家精简型Linux——名为Photon项目,并有意以开源方式帮助其进一步扩展普及度。另外虚拟巨头还为其ESXi虚拟机管理程序设计出新的虚拟机实现方式,命名为Bonneville项目,旨在对ESXi虚拟机加以简化、使其呈现出与Docker容器相仿的外观与运作方式。

Photon与Bonneville相结合将并发出巨大的能量,微软公司当然很清楚这一点。Photon的内存占用量大约为25 MB,相比之下完整安装的Linux操作系统则拥有高达3 GB的臃肿体积。微软目前尚未正式公布其Nano Server规范,也就是其即将推出的Windows Server精简版,但已经展示出一台拥有160个计算核心以及1 TB内存的主机样品。这台主机能够在Hyper-V虚拟机管理程序之上承载多达1000个Nano Server实例,如此出色的容纳能力意味着Nano Server确实是一款具备极端轻量化属性的系统。(如果大家亲自计算,就会发现每个实例的内存占用量约为1 GB,这完全无法与25 MB的Photon相提并论。)

VMware公司在x86硬件平台之上凭借着强大的服务器虚拟化技术将微软稳稳压倒,其目前年营收高达60亿美元,并在全球范围内拥有超过50万家客户以及运行在数百万台服务器之上的5000万套虚拟机系统。为了保持住如此强势的业务表现,虚拟巨头自然需要以积极态度与微软在这场软件容器发展浪潮当中展开竞争。VMware公司目前正着眼于开源社区战术及战略,当然也包括Docker及OpenStack等技术方案,为了帮助企业客户群体在无需更换现有核心VMware技术产品的前提下享受容器新技术的种种优势。微软方面的思路也是同样,其早在二十多年前就曾尝试利用Windows NT Server入住数据中心市场,且目前仍在继续在Docker窗口与精简系统领域遵循同样的发展战略。

微软与VMware双方都付出了大量精力,希望能够在已经快速成为容器化系统首选方案的Docker当中占据先发优势。值得强调的是,Docker如今几乎处于无可匹敌的状态,其发展速度非常惊人,同时也代表着容器技术的实际执行标准。

需要注意的是,微软公司在以超大规模方式运行分布式应用程序方面极具实践经验,这主要归功于微软旗下的Azure云以及Office 365乃至Xbox Live等作为软件帝国组成部分存在的各类服务。精简化Nano Server属于Windows Server 2016的高压缩版本,这套公布于今年4月的微软Docker发展实施方案正是整体战略当中的核心元素所在。在Nano Server的支持下,微软公司只提取了服务器操作系统中的Server Core,同时舍弃了大量可有可无的组件与功能——其中包括32位应用支持、Minimal Server Interface与整套图形化用户界面堆栈、Windows Installer Service以及本地与远程桌面协议登录功能。为了强调其小巧体积,微软曾在今年春季提到Nano Server只相当于Windows Server VHD虚拟磁盘镜像体积的7%,其受攻击面与重启数量则分别较后者低92%与80%。

Nano Server的技术预览版已经公布了一段时间,但在于本周发布的Windows Server 2016第三套技术预览版中,微软公司第一次展示了如何利用Windows Server Containers实现Docker。微软方面在Windows Server 2016当中嵌入了与Linux平台相同的Docker引擎守护进程,并在Windows内核中添加了多项功能作为支持。为了防止混淆,我们需要强调一点:这并不代表Windows能够运行基于Linux的Docker镜像。其实际含义在于,Windows用户能够像在Linux平台上一样使用完全相同的Docker容器创建及运行流程。再说得直白一点,Docker并不会意识到或者在乎自身到底是运行在Windows还是Linux系统平台上,但其代码仍然能够正常实现。

微软公司需要修复约18万行Windows Server代码才能完成这一浩大的系统瘦身工程,而这仅仅是整套系统代码库中的一小部分。微软方面还在Windows Server内核当中添加了低级资源隔离抽象机制,相当与谷歌用于帮助Linux社区开发所提供的namespaces与cgroups,为了保证Docker容器能够运行在Windows平台之上。软件巨头也调整了多款自家Visual Studio工具(包括内部与在线版本),这样它们就能够创建出ASP.NET应用程序并将其运行在立足于Azure公有云的Windows Server Containers(微软版本的Docker容器方案)当中。这些窗口可以通过Docker客户端加以管理,并由Docker或者微软Windows平台上的脚本创建方案PowerShell进行创建。

微软公司作出承诺,表示Windows Server 2016的未来技术预览版本将利用Hyper-V Containers机制实现Docker支持能力,其能够在精简化Hyper-V虚拟机当中运行Docker容器。

根据Azure首席技术官Mark Russinovich在一篇博文中所解释,Hyper-V容器将拥有自己的Windows内核副本以及专属系统内存配额,这意味着其容器化环境的隔离性要高于Windows Software Containers方案。Windows Software Containers与Hyper-V容器能够利用同样的Docker API与Docker客户端实现可部署性与可控制性。同样的,二者在容器化软件层面的功能性完全相同,但在资源隔离、安全性、启动速度、内存占用量以及其它资源需求方面则有所区别。

Docker扮演着容器技术之舟上的舵手角色

根据推测,微软公司已经在以Azure云为平台运用这两类容器方案方面积累到了丰富的经验。而这也是我们最希望与软件巨头进行探讨的议题方向。我们希望了解微软方面如何利用这些技术,又如何对其进行内部管理。对于Azure客户来说,微软公司允许他们使用Mesos、Kubernetes以及Deis工具来管理Docker窗口,而Azure则可以配合Docker Compose与Swarm容器部署及管理工具。目前DockerHub库拥有18万套容器方案,其中大部分面向Linux实例。我们期待着观察在Windows Server 2016全面推出之后,Windows容器库将迎来怎样的发展速度。目前全球范围内的Windows服务器部署数量已经达到数千万台,而新版本的出现加上容器机制的介入相信将让这一数字得到进一步提升。

Docker支持能力很可能成为微软推出的,最具市场号召力与客户吸引力的Windows Server 2016升级理由。诚然,总会有一部分客户需要更高内存容量或者更多计算核心数量、承载能力更强的虚拟机管理程序或者其它什么新型方案。但对于目前的大部分工作负载实例来看,Windows Server 2012的可扩展能力已经足以应对。因此,如果大家想了解微软在Docker容器的支持方面会带来怎样的表现,那么这就是最好的Windows Server 2016升级理由。Docker不仅能够帮助Windows Server在DevOps微服务领域保持强大的竞争能力,同时也让客户有了迁移至新版本甚至进一步扩大自身Windows Server部署规模的理由。或者,至少能够让客户不至于选择将新型应用程序交由Linux系统打理。

VMware公司积极拥抱Docker的理由也是一样。其ESXi 6.0虚拟机管理程序的可扩展能力已经足够让绝大多数客户满意,运行在其之上的虚拟机系统亦是同理。而且尽管VMware方面可以用一天时间来大谈所谓软件定义数据中心概念,但大部分企业还没有准备好全面接受其NSX网络虚拟化以及vRealize云工具。这部分业务在VMware现有客户群体中的占比还非常有限,而且短期内这一比例恐怕很难快速增长。

尽管在VMware看来,让现有50万家客户接受NSX网络虚拟化方案可能对业务更具推动作用,但同样不可忽视的是,企业客户切实需要以规模化方式将现有软件开发及部署机制推向Docker。我们认为微软与VMware双方将致力于交付Docker支持能力,从而维持住现有客户群体。而且如果他们无法成功实现这一目标,那么Linux社区将替其代劳,进而蚕食二者的市场份额与营收空间。

来源:畅享网

微软与VMware全面迎接并拓展Docker容器技术

评论(0)

您可以在评论框内@您的好友一起参与讨论!

<--script type="text/javascript">BAIDU_CLB_fillSlot("927898");