关于微软容器战略,你须要知道的十件事

自从微软和Docker宣布合做以来,微软Redmond一直在容器上面的战略可谓稳扎稳打。最近,微软加入Open Container Initiative (OCI),并做为创始成员承诺支持常见容器的格式和运行。在最新的Windows Server 2016技术预览版中,微软终于将本地的Windows Container技术提供给开发人员和系统管理员。数据库

因为媒体的关注和用户的积极反响,对于许多消费者来讲,容器就等因而Docker的代名词。并且它只在Linux上运行。鉴于这些事实,在开发者社区里,对于微软支持容器技术也一直比较混乱。在不一样的博客文章中,微软强调其投资容器。微软高管并不羞于告诉咱们他们有多么爱Docker和其背后的团队。这种定位致使你们对于微软容器战略的认识模糊。我不止一次听到开发商询问他们是否能够在Windows上运行Linux容器,反之亦然。在Docker、Windows Containers,以及Hyper-V Containers领域一样很是混乱,下面我就试图详细阐明微软的容器战略。安全

1.微软的容器策略并非可移植性

说的直白一点。你不能从Linux中push Docker Image而且pull它到Windows machine来启动容器。这两个操做系统之间底层内核的差别使它很难让容器可移植。过去,微软试图将一个POSIX兼容UNIX子系统Services for Unix。可是,这不一样。回到容器中,你没法使用微软容器模仿Package once deploy everywhere”。服务器

2.微软有两种类型的容器

Microsoft Windows Server 2016可以运行两种不一样类型的容器Windows Containers 和 Hyper-V Containers.。为何咱们须要两种类型的容器?由于他们是专为单独的用例和场景。Windows Server 2016技术预览版3仅仅支持Windows Containers。最终版本将包括两种。架构

3. Windows Containers是轻量级和极速的

这种优点保留了容器的优点——速度、敏捷性和性能。这是一个已知的事实,容器比虚拟机启动快得多。这是由于它们共享底层操做系统的内核。微软为容器设计Windows Server 2016来支持共享内核模型。Windows Containers依赖操做系统共享服务。这个设计天然致使更轻、更快的容器。他们很是相似于Linux容器。Windows Containers提供低级隔离,这在必定程度上下降运行异构工做负载的安全性。微服务

4. Hyper-V Containers使用虚拟化

若是你认为由于隔离级别,Windows容器不太安全,那么您应该考虑Hyper-V Containers。他们不共享操做系统相同的内核,于是带来强壮的隔离级别,相似于虚拟化。在幕后,Hyper-V Containers使用VM在他们本身的namespace运行专用容器。这种架构致使更重的容器大小和更长的启动时间。因此,你还须要使用它们吗?若是你有敏感的工做负载须要更健壮的隔离和安全,Hyper-V Containers是最好的。在多租户环境中像公共云,他们提供最好的安全性和听从性。工具

5. Docker Engine暴露两容器实现

若是微软有本身的本地容器实现,Docker的做用是什么?
让咱们仔细分析Docker的架构。性能

Docker做为一个平台有三个组件:spa

  1. Docker Engine操作系统

  2. Docker Tools命令行

  3. Docker Registry

Docker Engine在expose API过程当中担当大任。DockerCLI是管理容器生命周期的工具链。Docker Registry是存储图像的中央位置。
微软和Docker密切合做从Windows Containers和Hyper-V Containers中提供相同的API。这就使得微软的容器和Docker的巨大生态系统彼此协做,命令行接口也移植到Windows。

6.DockerCLI可用于控制Microsoft Containers和Linux Containers

命令行接口能够在Windows10和Windows Server 2016操做系统上获取。开发人员和管理员能够将客户端指向到一个运行的Docker Engine而且控制它。这意味着它能够从Windows10上管理运行在Red Hat服务器上的Linux容器。自微软决定让它的容器引擎兼容Docker Engine,相同的客户端被用来管理Windows Containers 以及Hyper-V Containers。从技术上讲,只要CLI能和远程引擎对接,它也能够从Ubuntu 或者 OS X上管理微软容器。

7. PowerShell Cmdlets可以和Microsoft Containers一块儿使用

除了使用DockerCLI和工具,用户可使用本身喜欢的PowerShell环境来自动化容器管理。微软已经带来一套Cmdlets处理方Windows 和Hyper-V Containers。这对本地工具和容器的集成有着重要做用。

8.Azure Service Fabric将编排Windows Containers

Azure Service Fabric是微软对于Kubernetes的对标。这是一个设计和部署微服务的平台。当多个同质容器管理和编排在一块儿,造成一个微服务应用程序。微软声称Service Fabric是Azure核心基础设施的基本技术。目前支持的服务包括Skype、InTune、Azure Data Factory、Azure DocumentDB。它在Azure SQL Database 和Bing Cortana上被用来管理超过140万客户数据库。开发者可以将他们的代码做为容器打包,将由Service Fabric编排。这种技术如今就能够在Windows和 Azure上获取可是将移植到Linux和其余云平台。

9. Kubernetes 和 Mesosphere能够在Azure上管理容器

Service Fabric服务可能还处在早期,但这并不能阻止微软用户在Azure上使用编排工具Kubernetes和Mesosphere。由于自从Windows Containers, Hyper-V Containers提供相同的DockerAPI,这些工具就能够与微软容器协同工做。它能够混合、匹配Linux容器和Windows容器构建一个复合的微服务应用。Docker Swarm, Kubernetes, Mesosphere以及 CoreOS Fleet可能不区分容器。这对微软用户和Docker用户来讲是共赢。

10.Azure不提供CaaS(至少到目前没有)

微软落后于亚马逊和谷歌的一个主要领域就是容器托管服务或容器做为服务(CaaS)。亚马逊在上一届re:Invent上宣布EC2 Container Service (ECS),最近已经提供这种服务。谷歌将它专业的Kubernetes与Google Compute Engine结合提供Google Container Engine (GKE)。其余平台如Tutum 和Joyent 也提供CaaS等。微软也许是等待它的容器技术稳定以后才发布,当它准备好了,Azure云平台将成为第一个管理Linux和Windows容器的云平台。

本文由张鹏程编译整理

原文连接: http://blog.tenxcloud.com/?p=462

相关文章
相关标签/搜索