關(guān)于Windows平臺(tái)上的Docker,我們需要了解哪些事實(shí)?
譯文【51CTO.com快譯】這個(gè)周末是在Monki Gras大會(huì)上度過(guò)的,在今年的這場(chǎng)軟件開發(fā)研討活動(dòng)當(dāng)中,人們的關(guān)注重點(diǎn)放在了軟件打包這一議題身上。不少發(fā)言者談到了容器技術(shù)在DevOps及持續(xù)交付領(lǐng)域的重要作用。然而作為一種普遍誤解,很多朋友仍然認(rèn)為Docker只能運(yùn)行在Linux虛擬機(jī)之上。
事實(shí)并非如此:Windows擁有自己的容器技術(shù),其立足于Docker但能夠在微軟環(huán)境下運(yùn)行。當(dāng)然,我理解為何會(huì)出現(xiàn)這種誤解:Windows 10剛剛新增Linux子系統(tǒng)功能,而Windows Server 2016在同一時(shí)間添加了Docker工具。這在一定程度上讓人們將Linux與Docker聯(lián)系了起來(lái)。
微軟對(duì)容器技術(shù)的重視已經(jīng)成為近年來(lái)最重要的跨領(lǐng)域發(fā)展舉措之一。毫無(wú)疑問(wèn),容器技術(shù)已經(jīng)迅速成為DevOps與持續(xù)集成實(shí)現(xiàn)工作中的關(guān)鍵性組成部分。微軟當(dāng)然也開始采取行動(dòng),而其工具也反映出微軟如何使用軟件并構(gòu)建應(yīng)用。
關(guān)于容器
通過(guò)將應(yīng)用所使用的服務(wù)與操作系統(tǒng)需要的服務(wù)加以拆分,現(xiàn)代容器技術(shù)已經(jīng)成為服務(wù)器端應(yīng)用打包與部署的有力工具。其便攜性能夠在本地?cái)?shù)據(jù)中心、私有、混合乃至公有云中得到充分體現(xiàn)。打包在容器內(nèi)的應(yīng)用與主機(jī)操作系統(tǒng)無(wú)關(guān),其可在任意類似的容器主機(jī)上運(yùn)行,而不必作出任何變更。
將應(yīng)用打包在容器內(nèi)意味著該應(yīng)用能夠輕松獲得運(yùn)行所必需的全部配置文件及依賴選項(xiàng)。大家可以在不影響底層操作系統(tǒng)的前提下更新容器版本,并在不變更代碼的情況下實(shí)現(xiàn)容器遷移。這種對(duì)基礎(chǔ)設(shè)施與應(yīng)用部署工作進(jìn)行分別管理的方式,正是DevOps模式的邏輯目標(biāo)所在。
原本作為大型機(jī)技術(shù)的容器方案(或者至少類似于命名空間與進(jìn)程隔離的表現(xiàn)形式)如今已經(jīng)能夠在各類Unix系統(tǒng)中找到,包括Linux與Solaris。
Windows容器探秘
現(xiàn)在,隨著Windows Server 2016的發(fā)布,Windows也有了自己的容器技術(shù)。其基于開源Docker容器,但同時(shí)增加了對(duì)PowerShell的支持并能夠?qū)ano Server與Hyper-V容器進(jìn)行額外隔離。
Docker仍是微軟容器戰(zhàn)略的核心所在。大家不僅能夠利用Swarm、Machine乃至Data Center等產(chǎn)品管理Windows與Linux容器,甚至能夠在Windows 10上通過(guò)Bash shell將Docker客戶端安裝在Linux子系統(tǒng)中并加以使用。不過(guò)這種方式要求大家提供證書,因此用戶普遍更傾向直接選擇Docker的Windows版本應(yīng)用。
與多數(shù)Windows Server功能一樣,Windows容器可通過(guò)Windows對(duì)話框或者PowerShell進(jìn)行安裝。采用PowerShell更為高效,因?yàn)镺neGet PowerShell模塊能夠同時(shí)安裝Windows容器與Docker,且只需一次重啟即可起效。(如果大家希望使用Hyper-V容器,則還需要啟用Hyper-V虛擬化選項(xiàng)。)
Windows容器得到了開發(fā)與運(yùn)營(yíng)團(tuán)隊(duì)的熱情支持,自Windows Server 2016通用版本發(fā)布以來(lái),Docker Hub容器庫(kù)的基礎(chǔ)Windows鏡像下載量已經(jīng)突破100萬(wàn)次。
在Windows上構(gòu)建并部署容器
容器不只是一款服務(wù)器工具,Windows 10的專業(yè)版與企業(yè)版皆支持該項(xiàng)技術(shù)。另外由于Windows 10只支持Hyper-V容器,所以大家還需要安裝Hyper-V。
在Windows容器功能啟用后,大家還需要下載并安裝Docker Engine與Docker客戶端,而后安裝您為應(yīng)用配置的基礎(chǔ)鏡像。
微軟建議大家利用Nano Server作為Windows容器基礎(chǔ)構(gòu)建鏡像,其體積小巧且速度極快,沒有UI,因此部署更快且相對(duì)更安全。
另外,雖然大家可以利用Nano Server托管Node.js等運(yùn)行時(shí),但其本身其實(shí)主要用于托管.Net Core應(yīng)用。大家無(wú)法獲得全部.Net功能。不過(guò)如此一來(lái),大家可以單純將Nano Server托管的Windows容器視為新應(yīng)用工具,而非對(duì)原有代碼的托管方案。
正因?yàn)樯鲜霾町悾芏嗥髽I(yè)更傾向于利用Windows Server Core作為基礎(chǔ)鏡像。雖然其體積更大且部署時(shí)間更長(zhǎng),但Windows Server Core支持當(dāng)前Windows SDK及全部.Net實(shí)現(xiàn)方式。大家可以選擇在現(xiàn)有服務(wù)器與容器之間輕松切換,從而讓應(yīng)用隨時(shí)部署在您需要的平臺(tái)之上。當(dāng)應(yīng)用被部署在容器中后,開發(fā)者能夠進(jìn)行進(jìn)一步拆分,例如將API連接器移動(dòng)至其自有Nano Server容器以簡(jiǎn)化應(yīng)用維護(hù)工作。
Windows容器現(xiàn)在已經(jīng)可作為Visual Studio 2017的部署目標(biāo)。大家可以將應(yīng)用構(gòu)建并交付為容器形式以供測(cè)試。對(duì)于容器技術(shù)的推廣而言,如此簡(jiǎn)單的一鍵式實(shí)現(xiàn)方式也確實(shí)非常重要。
由于微軟Azure將很快支持嵌套虛擬化,因此我們將能夠借容器之力在公有云內(nèi)添加更多隔離能力,從而幫助監(jiān)管機(jī)構(gòu)進(jìn)一步了解將應(yīng)用遷移至容器以及云環(huán)境的可行性及重要意義。
原文標(biāo)題:What you need to know about Docker in Windows
原文作者:Simon Bisson
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】