Windows容器技术大剖析
2016-10-22 12:42:51 | 来源:ithome | 投稿:洛洛 | 编辑:dations

原标题:Windows容器技术大剖析

微软设计了两种Windows Container(简称Windows容器),一种共用系统核心资源的Windows Server Container(简称Windows Server容器),另一种则是有自己独立系统核心资源的Hyper-V Container(简称Hyper-V容器)。(图片来源/微软)

支援Docker容器技术是新版Windows Server 2016关键的新特色之一,也是打破Windows和Linux世界壁垒的其中一项关键。在微软负责Docker技术研发团队的微软首席资开发首席John Starks就透露,最大困难是,Docker源自Linux核心的系统层功能,如控制资源的控制群组机制cgroups、命名空间Namespaces,还有实现层级化功能的共通档案系统AUFS等,这些都是在Windows所没有的功能。

早在2014年6月,微软有意将Docker专案複製到Windows环境上时发现,「需要推出新版作业系统才能解决这个问题,这也就成了Windows Server 2016要实现的功能。」John Starks说。

微软如何实作Windows容器

为了将Docker技术搬到Windows世界,微软首先在新版Windows 中实现了容器需要的三种系统层机制,控制群组机制(微软称为Job objects),命名空间机制(包括了Object Namespace、Process Table和Networking)以及层级能力,来提供作业系统层级的运算服务层(Compute Service),才在Windows上打造出了能与Docker 相容的Container技术。

不只是重现Linux机制,微软还得兼顾与Windows的相容性,理,例如在命名空间的设计上,微软除了增加了Silo\来管理Windows系统资源的起点,如\Silos\foo,也将Windows环境下常用的目录如C:\或C:\Windwos,在Windows容器中,也改由Object namespace来管理,变成了\DosDevices\C:和\DosDevices\C:\Windwos等存取路径。

或像是在档案系统的设计上,John Starks解释,NTFS档案系统太複杂,很难用NTFS打造一套UnionFS档案系统,因此,微软採取混合架构,每一个容器有各自有一份NTFS分区表,搭配虚拟的区块储存装置来建立容器的多层式档案系统,再利用Symlink机制,将不同层内的档案对应到Host环境档案系统的实际档案上,来减少虚拟区块储存装置所占用的容量。

Windows容器有两种

微软设计了两种Windows Container(简称Windows容器),一种共用系统核心资源的Windows Server Container(简称Windows Server容器),另一种则是有自己独立系统核心资源的Hyper-V Container(简称Hyper-V容器)。Windows Server容器更像是Linux上的Docker容器,和其他容器共用同一套Host作业系统的核心,而Hyper-V Container则会有一份专用的作业系统核心,而不会共用Host核心。在同一个作业系统环境中,可以同时执行这两类的Windows容器。

简单来说,Hyper-V容器就像是一个包在Hyper-V特殊款虚拟机器内的Windows Server容器。Hyper-V容器内有一份独立的系统Kernel、一个Windows Server容器、Guest运算服务、基础系统Process。

不过,Hyper-V容器所建立的特殊虚拟机器,并非是真正的Hyper-V虚拟机器,而是一个用精简版Hyper-V虚拟化技术隔离的环境,像是在Hyper-V分区上执行的一个Windows Server容器。微软表示,第一个Hyper-V容器启动约40秒,为了加快Hyper-V容器的启动速度,微软还设计了一个複製机制,可以快速複製(Fork)记忆体内第一个Hyper-V容器的特殊VM环境,来加快其他Hyper-V容器的建立速度。

在Windows作业系统内的Docker引擎,可以呼叫这些Windows系统层级的运算服务来执行和管理Windows容器,就如同在Docker引擎在Linux环境中透过containerd和runc服务来管理Linux容器一样。从载入Docker映象档来布建应用的流程来看,Docker引擎成了开发者唯一要面对的作业系统环境抽象层,而不用担心底层容器技术如何运作,几乎所有的Docker指令都同样可以在Windows环境下执行,只有少数指令的运作和Linux环境不同,例如不支援FROM scratch指令。

类型1:Windows Server容器

微软设计了两种容器,第一种称为Windows Server容器,这很像是Linux上的Docker容器,和其他容器共用同一套Host作业系统的核心。也可以使用Dockerfile来建立描述性的映象档。(图片来源/微软)

?

类型2:Hyper-V容器

另一种Windows容器称为Hyper-V容器,像是一个包在Hyper-V特殊型VM内的Windows Server容器,会有一份专属OS核心,而不与其他容器共用Host核心。和Windwos Server容器一样支援相同的Dockerfile映象档。(图片来源/微软)

Windows容器的Dockerfile有点不同

Windows容器同样也可以使用Dockerfile来建立描述性的映象档,来将Windows基础架构配置程式化,微软还推出了支援Docker的PowerShell指令,可用于命令列模式下,搭配Docker指令来管理Windows容器。

几乎大多数Docker指令可用于Windows环境中,例如要注意反斜线逸出如WORKDIR c:\\Apache24\\bin才有效。另外,可以在Dockerfile档中用RUN powershell.exe来执行PowerShell指令设定环境配置。这也意味着Linux环境的Dockerfile得费一番功夫调整才能用于Windows环境。

目前,Windows容器的Dockerfile只能使用两种基础映象档(Base image)来建立容器,一个是windowservercore基础映象档(档案超大约6 GB,但相容性高)和nanoserver基础映象档(档案小约5百MB,启动速度快,简单API介面),而无法使用Linux类基础映象档,如Docker开发者惯用的Ubuntu,来建立Windows容器。使用这两种基础映象档建立的Dockerfile都可用来建立Windows Server容器或Hyper-V容器。

微软目前正式推出的是Docker on Windows,可以做到在Windows上能跑Docker,包括Window Server 2016和Windows 10都已支援,但微软下一步想要实现的是Docker for Windows,能够将Docker技术高度整合到Windows内,做到可以同时在Windows环境内执行任何类型的Docker容器,也就是能同时执行Windows类容器和Linux类容器,如此一来就「可以在Windows上平行执行Windows应用和Linux应用了」。目前,Docker for Windows还处于Beta测试版本,「两者完成整合的那一天很快就会到来。」John Starks说。

tags:容器   剖析   技术

上一篇  下一篇

相关:

IBM庆在台60年 秀认知运算技术新应用

科技服务公司IBM欢庆在台60年,今天盛大举办《智创未来》趋势论坛,寻找台湾产业下一波数位再造的策略与方针,现场也展示各大产业的认知运算技术最新应用案例。IBM表示,今天论坛特别邀请IBM全球企业咨询服务事业部

工研院新技术 雷射光让不锈钢色彩缤纷

“2016台湾国际雷射展”今起连展3天,工研院展出20项最新研发成果,其中发表2016美国百大科技“金属雷射上色技术”,靠著国产特殊制程雷射光就能让不锈钢色彩缤纷。工研院在雷射展展出近20项最新自主雷射源、关键光

新思设计工具 获台积电7纳米技术认证

新思科技近日宣布,设计工具已获台积电7纳米FinFET△技术节点认证。新思指出,包括数位、签核及订制实作等设计工具,已获得台积电7纳米鰭式场效电晶体技术节点认证,目前导入 7纳米制程的厂商,已规划多种设计。为因

王永和掌国研院 助科技部研发新技术

新任国家实验研究院院长王永和今天说,国研院任务为建构研发平台、支援学术研究、推动前瞻科技、培育科技人才,未来将扩充其內容,并协助科技部推动产业前瞻技术研发政策。成功大学电机工程学系及光电科学与工程学系

日常饮食养生为你剖析绿叶菜的营养 有意思

日常饮食养生为你剖析绿叶菜的营养1.富含维生素C。通常人们以为水果中的维生素C高,其实,绿叶菜中维生素C的含量比普通水果高。2.富含β-胡萝卜素。β-胡萝卜素可以消除自由基,延缓衰老,预防慢性病。它还能

站长推荐: