微軟在2016年的Ignite技術(shù)大會(huì)上正式發(fā)布了Windows Server 2016,其中的容器服務(wù)已經(jīng)可以作為生產(chǎn)環(huán)境使用。這意味著Windows 內(nèi)置的容器服務(wù)正式進(jìn)入了大家的視野,雖然之前我們已經(jīng)有了Docker for Windows,但是在這篇文章中我們要聊的并不是運(yùn)行在Windows上面的Linux虛擬機(jī)里面的容器,而是原生的Windows容器。

1. Windows Container提供2種運(yùn)行時(shí):Window Server Contianer 或者 Hyper-V Container

Windows 提供2種類型的容器運(yùn)行時(shí)模型。其中,Windows Server Container 與大家所熟悉的Linux Contianer容器模型一致,容器與底層操作系統(tǒng)共享內(nèi)核,所以它們會(huì)很輕量而且運(yùn)行迅速。當(dāng)你在容器中啟動(dòng)一個(gè)進(jìn)程的時(shí)候,這個(gè)進(jìn)程實(shí)際上運(yùn)行在宿主機(jī)上,你可以使用任務(wù)管理器或者Powershell 命令 Get-Process 獲取到這個(gè)進(jìn)程的信息。

Hyper-V Contianer則是一種全新的容器運(yùn)行時(shí)模型,它將在宿主機(jī)上啟動(dòng)一個(gè)很小的虛擬機(jī),所以容器將具備自己獨(dú)立的操作系統(tǒng)內(nèi)核。當(dāng)你在Hyper-V Container中啟動(dòng)進(jìn)程的時(shí)候,宿主機(jī)對(duì)這個(gè)進(jìn)程是無(wú)感知的。Hyper-V Container提供了更好的隔離性,而且這個(gè)虛擬機(jī)被裁減得非常小,所以性能仍然會(huì)不錯(cuò)。在Windows Server 2016上,你可以在2種不同的運(yùn)行時(shí)之間選擇;而Windows 10上雖然也提供了容器服務(wù),但是只能運(yùn)行Hyper-V Contianer。

無(wú)論是哪種運(yùn)行時(shí),你都可以使用標(biāo)準(zhǔn)的Docker命令行進(jìn)行操作,同時(shí)容器鏡像的格式也和Linux容器鏡像保持一致。這意味著Windows Container 可以通過(guò) docker hub 分發(fā),你之前在Linux容器上的經(jīng)驗(yàn)積累也可以被繼承到Windows容器上。

2. Windows Container 只能運(yùn)行 Windows應(yīng)用程序(至少現(xiàn)在是這樣)

很多朋友都問(wèn)過(guò)這個(gè)問(wèn)題:我是不是可以在Windows容器服務(wù)中運(yùn)行Linux應(yīng)用,或者反過(guò)來(lái)。Docker很厲害,但還木有辣么厲害。你無(wú)法在Windows上直接運(yùn)行Linux進(jìn)程,同樣你也無(wú)法在Windows Container中運(yùn)行Linux進(jìn)程。這個(gè)情況對(duì)于以上提到的2中運(yùn)行時(shí)都適用,無(wú)論哪種運(yùn)行時(shí)模型