Windows容器比较:WinDocks与Microsoft


WinDocks是Docker向Windows开放源代码的一个独立端口。作为一群前微软工程师,我们致力于增强软件开发人员的工作,并于2016年3月发布了业界首个Docker开放源代码的Windows端口。我们已经建立了一个基于免费社区版的技术社区。

现在微软已经发布了支持容器的Windows Server 2016,许多人要求详细回顾WinDocks和微软实现之间的差异。以下观察是基于微软对一组SQL Server专业人员的公开演示,并通过在Windows Server2016上测试微软的容器得出的。

用于开发和测试的容器

Windows容器提供了与Linux类似的好处,因此我们期望Windows容器成为支持开发,测试和QA的首选基础设施。在不久的将来,容器应该会导致持续集成,持续交付和DevOps方面的增长。

WinDocks容器提供了速度和效率,每个开发人员在一个共享的VM上使用隔离的容器环境,每个容器环境在几秒钟内实例化。使用多达20个VM的平均开发团队可以使用带有容器的单个VM。Microsoft服务器许可证的20:1减少为WinDocks用户带来了立即的,显著的ROI(但可能不会为Microsoft容器的用户带来)。

WinDocks与Microsoft

内置:微软的容器支持包含在Windows Server 2016中,是Windows 10专业版和企业版的附加组件。两者都为客户提供了一个可联系的供应商以获得支持。虽然容器支持没有额外的成本,但实际上它们并不一定是免费的(请阅读成本来源)。

WinDocks Windows支持:WinDocks为Windows 8,Windows 10,Windows Server 2012和Windows Server 2016的所有版本添加了容器支持,为开发人员提供了方便的访问。行业调查表明,客户计划gradual migration to Windows Server 2016. 这些调查表明,到2020年,Windows Server 2012的使用份额将继续扩大,而Windows Server 2016将在同期逐步增长。

SQL Server支持:创建WinDocks是为了满足开发人员对高效SQL Server环境的需求。超过80%的组织进行测试SQLServer only twice monthly.发布的WinDocks支持SQL Server 2008以后的所有版本,具有SQL Server容器和图像的自动化工作流。WinDocks利用Microsoft久经考验的共享DLL体系结构,使当前的SQL Server许可证可以在容器中使用,而无需更改工具或过程。

Windows Server 2016发布时没有有效的SQL Server支持。在发布三个月后,SQL Server映像支持仍然仅限于SQL Server 2014 Express和SQL Server 2016 Express.其他悬而未决的问题包括缺少对SQL Server Management Studio的Windows身份验证的支持(目前仅限于SQL sa身份验证),以及缺少IP环回支持。总之,微软对SQL Server的支持只能用不完整来形容。

尚未讨论的更大问题是,Microsoft计划为未来的SQL Server容器映像制定新的SQL Server许可条款,但未予披露。新的许可还没有公布,但是考虑到容器减少了VM,它不太可能是“免费的”。

应用程序容器vs.Microsoft Bloatware:WinDocks容器提供用户和进程隔离,进程“保护”容器并强制执行资源限制。该设计为企业内受信任的工作负载提供了类似于Microsoft服务器核心容器的安全性。该设计不是为不受信任的多租户使用而设计的,这也解释了为什么Microsoft提供Hyper-V容器支持。

WinDocks应用程序容器的重量比微软的要轻得多。微软的容器承载着大量的Windows文件,其基本映像平均大于9 GB,而WinDock的平均为100 MB。Microsoft容器需要比WinDocks容器多20个额外的进程和80 MB的RAM。带有IIS容器的WinDocks.NET使用5 MB RAM(16倍的差异),因此对系统大小的影响很大。如果一般的开发团队混合运行SQL Server和。NET,那么一台Microsoft容器主机将需要比WinDocks服务器多2-4倍的CPU和RAM!

微软的设计还增加了映像维护,因为Windows更新强制重建映像(每个映像包含大量Windows占用)。相反,WinDocks设计允许独立于容器映像更新主机。

映像支持:除了支持SQL Server2008以后的所有版本外,WinDocks还支持带有Tomcat和Jetty的Java,Nginx和Node.js。正如我们已经指出的,Microsoft缺乏对大多数SQL Server版本和版本以及带有Tomcat的Java的映像支持。

遗留应用程序支持:Microsoft设计的一个优点是能够支持需要注册表支持的Windows应用程序。WinDocks对SQL Server映像的支持涉及到支持SQL Server使用Windows注册表的重要工程。Microsoft的设计可以更好地支持使用Windows注册表的广泛应用程序。

容器授权:WinDocks利用本地安装的。NET和SQL Server实例来支持容器和映像的创建。这种方法实现简单,效率高,并且利用了Microsoft经过验证的共享DLL体系结构。此方法还使用现有的基于主机或核心的SQL Server许可。当前的SQL Server许可证允许在一台主机上有多个实例,而WinDocks使多实例使用变得又快又实用。对于开源映像,如Nginx,Node.js或Java,WinDocks包括可再分发的运行时支持。

Microsoft的容器支持基于新的设计,每个容器都是应用程序的一个新安装,容器映像是一个新的安装包。这解释了Microsoft内部引入新许可条款的基本原理。

其他问题:Microsoft的容器支持正在取得进展,但在撰写本文时,缺少对IP环回的支持,与容器无关的挂载支持以及对SQL Server Management Studio的Windows Auth的支持。

结论

通过使用现有的系统和许可,WinDocks更易于采用,使用和支持。开发人员可以从Windows 8,Windows 10,Windows Server 2012或Windows Server 2016开始,并支持。NET,SQL Server和Java。该软件被广泛使用,开发人员平均减少了10:1的VM使用量,大大节省了微软的许可成本。

微软的容器故事是不完整的,提供有限的可伸缩性,是一个令人头痛的维护问题,并且有大量的未回答的问题。考虑使用Microsoft容器的客户应考虑即将发布的新SQL Server映像许可证,对更多更大系统的需求以及正在进行的映像维护。

我们的建议是用WinDock开始您对Windows容器的评估。WinDocks的社区版是免费的,商业使用许可证的起价仅为99美元/月。的WinDocks选项摘要getting started is here.