Windows Container 和 Docker

來源:互聯網
上載者:User

標籤:windows應用   未來   devops   模型   com   公眾   center   自己   靈活   

Windows Container 和 Docker

微軟在2016年的Ignite技術大會上正式發布了Windows Server 2016,其中的Container Service已經可以作為生產環境使用。這意味著Windows 內建的Container Service正式進入了大家的視野,雖然之前我們已經有了Docker for Windows,但是在這篇文章中我們要聊的並不是運行在Windows上面的Linux虛擬機器裡面的容器,而是原生的Windows容器。

1. Windows Container提供2種運行時:Window Server Contianer 或者 Hyper-V Container

Windows 提供2種類型的容器運行時模型。其中,Windows Server Container 與大家所熟悉的Linux Contianer容器模型一致,容器與底層作業系統共用核心,所以它們會很輕量而且運行迅速。當你在容器中啟動一個進程的時候,這個進程實際上運行在宿主機上,你可以使用工作管理員或者Powershell 命令 Get-Process 擷取到這個進程的資訊。

Hyper-V Contianer則是一種全新的容器運行時模型,它將在宿主機上啟動一個很小的虛擬機器,所以容器將具備自己獨立的作業系統核心。當你在Hyper-V Container中啟動進程的時候,宿主機對這個進程是無感知的。Hyper-V Container提供了更好的隔離性,而且這個虛擬機器被裁減得非常小,所以效能仍然會不錯。在Windows Server 2016上,你可以在2種不同的運行時之間選擇;而Windows 10上雖然也提供了Container Service,但是只能運行Hyper-V Contianer。

無論是哪種運行時,你都可以使用標準的Docker命令列進行操作,同時容器鏡像的格式也和Linux容器鏡像保持一致。這意味著Windows Container 可以通過 docker hub 分發,你之前在Linux容器上的經驗積累也可以被繼承到Windows容器上。

2. Windows Container 只能運行 Windows應用程式(至少現在是這樣)

很多朋友都問過這個問題:我是不是可以在WindowsContainer Service中運行Linux應用,或者反過來。Docker很厲害,但還木有辣麼厲害。你無法在Windows上直接運行Linux進程,同樣你也無法在Windows Container中運行Linux進程。這個情況對於以上提到的2中運行時都適用,無論哪種運行時模型,底層作業系統都是Windows,所以你無法運行Linux進程。

這同樣意味著,當前Docker Hub上面的大量鏡像無法在Windows Container 中使用。微軟已經開始在Docker Hub上提供Windows容器鏡像,你可以使用同樣的docker pull命令或者去這些鏡像。比如:microsoft/windowservercore 鏡像是一個完整的伺服器鏡像(大概3G大小),在這個鏡像中你可以使用標準的msi安裝包,通過Dockerfile來構建你自己鏡像,可以安裝和運行完整的.net framework和其他的Windows應用程式。microsoft/nanoserver 鏡像則是一個精簡版的作業系統鏡像(大概300M),不提供msi支援,只能運行.net core應用,同時需要使用powershell進行管理。

雖然微軟在過去的幾年中變得越來越開放,但是Windows和Linux仍然是2個完全不同的作業系統,我們看到了bash for windows,也看到 powershell on linux,但其中的界限仍然存在。具微軟在Ignite大會上提供的資訊,未來也許可以通過Hyper-V Container提供在Windows上運行Linux Container的支援,但是現在暫時還做不到。

3. 容器編排平台已經可以支援混合部署Windows和Linux伺服器節點

Swarm是Docker提供的容器編排平台,從1.12版本開始,任何的伺服器節點都可以加入Swarm叢集,這同樣適用於Windows伺服器。因此,你可以在一個Swarm叢集中混合部署Windows和Linux節點,雖然不同的作業系統節點上只能運行對應的容器,但是它們都可以通過swarm network進行通訊,構建一個完整的應用。

對於微服務拆分來說,可以構建跨平台的分布式應用非常具有吸引力。如果你的應用現在是一個傳統的asp.net單體應用,你可以先採用microsoft/windowservercore鏡像對整個單體應用進行容器化部署,然後逐步的將其中的某些組件進行拆分,使用microsoft/nanoserver上的.net core來運行這些微服務元件,你甚至可以引入nginx作為你的反向 Proxy伺服器,並將其運行在linux伺服器節點上。

混合的Docker Swarm叢集為你提供了更佳的微服務拆分路徑,並在拆分過程中提供了更靈活的跨平台選擇,這對於任何的團隊都非常具有吸引力。

4. Windows Container的授權方式將跟隨所啟動並執行作業系統而定

如果你到Docker Hub上查看微軟的windows server core和nano server容器鏡像,你會注意到說明中都帶有授權說明(EULA)。按照其中的說明,容器將隨所啟動並執行作業系統授權,也就是說根據你使用伺服器版本而定,如:DataCenter或者Standard版本。

是我在微軟官方的Windows Server 2016授權白皮書上找到的,根據這個說明,你可以在DataCenter上運行無限個Hyper-V Container,而在Standard版本上運行2個;而對於原生的Windows Server Container 則都是無限。

雖然在Docker Hub上的大多數鏡像都是開源軟體,但是開源並不意味著免費。同時Docker也已經開始通過 Docker Store 供應商業化的容器鏡像分發服務,這些鏡像則都是收費的。

5. 是時候開始探索 Windows Container 了

Windows Server 2016已經正式發布了,Windows 10上面的Container Service也已經提供很久了。微軟在過去的幾年中與Docker的合作非常緊密,當前的Docker工具中對Windows Container的支援API也都已經穩定。所以如果你在考慮何時開始容器化你的Windows應用,那麼現在就可以開始了。

LEANSOFT與微軟中國合作推出的《UDAD DevOps培訓》在2016年受到了社區的極大關注,我們在北京,上海和深圳分別提供了多場培訓,參訓學員超過上千人。Windows Container一直都是學員們非常關注的內容,在2017年中,我們將推出包括Windows Container在內的多項新培訓內容。首期培訓將在2月份開課,請大家關注我們的公眾號。

Windows Container 和 Docker

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.