關(guān)于微軟容器戰(zhàn)略 你需要知道的十件事
自從微軟和Docker宣布合作以來(lái),微軟Redmond一直在容器上面的戰(zhàn)略可謂穩(wěn)扎穩(wěn)打。最近,微軟加入Open Container Initiative (OCI),并作為創(chuàng)始成員承諾支持常見(jiàn)容器的格式和運(yùn)行。在最新的Windows Server 2016技術(shù)預(yù)覽版中,微軟終于將本地的Windows Container技術(shù)提供給開(kāi)發(fā)人員和系統(tǒng)管理員。
由于媒體的關(guān)注和用戶的積極反響,對(duì)于許多消費(fèi)者來(lái)說(shuō),容器就等于是Docker的代名詞。而且它只在Linux上運(yùn)行。鑒于這些事實(shí),在開(kāi)發(fā)者社區(qū)里,對(duì)于微軟支持容器技術(shù)也一直比較混亂。在不同的博客文章中,微軟強(qiáng)調(diào)其投資容器。微軟高管并不羞于告訴我們他們有多么愛(ài)Docker和其背后的團(tuán)隊(duì)。這種定位導(dǎo)致大家對(duì)于微軟容器戰(zhàn)略的認(rèn)識(shí)模糊。我不止一次聽(tīng)到開(kāi)發(fā)商詢問(wèn)他們是否可以在Windows上運(yùn)行Linux容器,反之亦然。在Docker、Windows Containers,以及Hyper-V Containers領(lǐng)域同樣非常混亂,下面我就試圖詳細(xì)闡明微軟的容器戰(zhàn)略。
1.微軟的容器策略并不是可移植性
說(shuō)的直白一點(diǎn)。你不能從Linux中push Docker Image并且pull它到Windows machine來(lái)啟動(dòng)容器。這兩個(gè)操作系統(tǒng)之間底層內(nèi)核的差異使它很難讓容器可移植。過(guò)去,微軟試圖將一個(gè)POSIX兼容UNIX子系統(tǒng)Services for Unix。但是,這不同。回到容器中,你無(wú)法使用微軟容器模仿Package once deploy everywhere”。
2.微軟有兩種類(lèi)型的容器
Microsoft Windows Server 2016能夠運(yùn)行兩種不同類(lèi)型的容器Windows Containers 和 Hyper-V Containers.。為什么我們需要兩種類(lèi)型的容器?因?yàn)樗麄兪菍?zhuān)為單獨(dú)的用例和場(chǎng)景。Windows Server 2016技術(shù)預(yù)覽版3僅僅支持Windows Containers。最終版本將包括兩種。
3. Windows Containers是輕量級(jí)和極速的
這種優(yōu)勢(shì)保留了容器的優(yōu)勢(shì)——速度、敏捷性和性能。這是一個(gè)已知的事實(shí),容器比虛擬機(jī)啟動(dòng)快得多。這是因?yàn)樗鼈児蚕淼讓硬僮飨到y(tǒng)的內(nèi)核。微軟為容器設(shè)計(jì)Windows Server 2016來(lái)支持共享內(nèi)核模型。Windows Containers依賴(lài)操作系統(tǒng)共享服務(wù)。這個(gè)設(shè)計(jì)自然導(dǎo)致更輕、更快的容器。他們非常類(lèi)似于Linux容器。Windows Containers提供低級(jí)隔離,這在一定程度上降低運(yùn)行異構(gòu)工作負(fù)載的安全性。
4. Hyper-V Containers使用虛擬化
如果你認(rèn)為因?yàn)楦綦x級(jí)別,Windows容器不太安全,那么您應(yīng)該考慮Hyper-V Containers。他們不共享操作系統(tǒng)相同的內(nèi)核,因而帶來(lái)強(qiáng)壯的隔離級(jí)別,類(lèi)似于虛擬化。在幕后,Hyper-V Containers使用VM在他們自己的namespace運(yùn)行專(zhuān)用容器。這種架構(gòu)導(dǎo)致更重的容器大小和更長(zhǎng)的啟動(dòng)時(shí)間。所以,你還需要使用它們嗎?如果你有敏感的工作負(fù)載需要更健壯的隔離和安全,Hyper-V Containers是最好的。在多租戶環(huán)境中像公共云,他們提供最好的安全性和遵從性。
5. Docker Engine暴露兩容器實(shí)現(xiàn)
如果微軟有自己的本地容器實(shí)現(xiàn),Docker的作用是什么?
讓我們仔細(xì)分析Docker的架構(gòu)。
Docker作為一個(gè)平臺(tái)有三個(gè)組件:
1. Docker Engine
2. Docker Tools
3. Docker Registry
Docker Engine在expose API過(guò)程中擔(dān)當(dāng)大任。DockerCLI是管理容器生命周期的工具鏈。Docker Registry是存儲(chǔ)圖像的中央位置。
微軟和Docker密切合作從Windows Containers和Hyper-V Containers中提供相同的API。這就使得微軟的容器和Docker的巨大生態(tài)系統(tǒng)彼此協(xié)作,命令行接口也移植到Windows。
6.DockerCLI可用于控制Microsoft Containers和Linux Containers
命令行接口可以在Windows10和Windows Server 2016操作系統(tǒng)上獲取。開(kāi)發(fā)人員和管理員可以將客戶端指向到一個(gè)運(yùn)行的Docker Engine并且控制它。這意味著它可以從Windows10上管理運(yùn)行在Red Hat服務(wù)器上的Linux容器。自微軟決定讓它的容器引擎兼容Docker Engine,相同的客戶端被用來(lái)管理Windows Containers 以及Hyper-V Containers。從技術(shù)上講,只要CLI能和遠(yuǎn)程引擎對(duì)接,它也可以從Ubuntu 或者 OS X上管理微軟容器。
7. PowerShell Cmdlets能夠和Microsoft Containers一起使用
除了使用DockerCLI和工具,用戶可以使用自己喜歡的PowerShell環(huán)境來(lái)自動(dòng)化容器管理。微軟已經(jīng)帶來(lái)一套Cmdlets處理方Windows 和Hyper-V Containers。這對(duì)本地工具和容器的集成有著重要作用。
8.Azure Service Fabric將編排Windows Containers
Azure Service Fabric是微軟對(duì)于Kubernetes的對(duì)標(biāo)。這是一個(gè)設(shè)計(jì)和部署微服務(wù)的平臺(tái)。當(dāng)多個(gè)同質(zhì)容器管理和編排在一起,形成一個(gè)微服務(wù)應(yīng)用程序。微軟聲稱(chēng)Service Fabric是Azure核心基礎(chǔ)設(shè)施的基本技術(shù)。目前支持的服務(wù)包括Skype、InTune、Azure Data Factory、Azure DocumentDB。它在Azure SQL Database 和Bing Cortana上被用來(lái)管理超過(guò)140萬(wàn)客戶數(shù)據(jù)庫(kù)。開(kāi)發(fā)者能夠?qū)⑺麄兊拇a作為容器打包,將由Service Fabric編排。這種技術(shù)現(xiàn)在就可以在Windows和 Azure上獲取但是將移植到Linux和其他云平臺(tái)。
9. Kubernetes 和 Mesosphere可以在Azure上管理容器
Service Fabric服務(wù)可能還處在早期,但這并不能阻止微軟用戶在Azure上使用編排工具Kubernetes和Mesosphere。因?yàn)樽詮腤indows Containers, Hyper-V Containers提供相同的DockerAPI,這些工具就可以與微軟容器協(xié)同工作。它可以混合、匹配Linux容器和Windows容器構(gòu)建一個(gè)復(fù)合的微服務(wù)應(yīng)用。Docker Swarm, Kubernetes, Mesosphere以及 CoreOS Fleet可能不區(qū)分容器。這對(duì)微軟用戶和Docker用戶來(lái)說(shuō)是雙贏。
10.Azure不提供CaaS(至少到目前沒(méi)有)
微軟落后于亞馬遜和谷歌的一個(gè)主要領(lǐng)域就是容器托管服務(wù)或容器作為服務(wù)(CaaS)。亞馬遜在上一屆re:Invent上宣布EC2 Container Service (ECS),最近已經(jīng)提供這種服務(wù)。谷歌將它專(zhuān)業(yè)的Kubernetes與Google Compute Engine結(jié)合提供Google Container Engine (GKE)。其他平臺(tái)如Tutum 和Joyent 也提供CaaS等。微軟也許是等待它的容器技術(shù)穩(wěn)定之后才發(fā)布,當(dāng)它準(zhǔn)備好了,Azure云平臺(tái)將成為第一個(gè)管理Linux和Windows容器的云平臺(tái)。