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