微軟在2016年的Ignite技術大會上正式發(fā)布了Windows Server 2016,其中的容器服務已經可以作為生產環(huán)境使用。這意味著Windows 內置的容器服務正式進入了大家的視野,雖然之前我們已經有了Docker for Windows,但是在這篇文章中我們要聊的并不是運行在Windows上面的Linux虛擬機里面的容器,而是原生的Windows容器。
1. Windows Container提供2種運行時:Window Server Contianer 或者 Hyper-V Container
Windows 提供2種類型的容器運行時模型。其中,Windows Server Container 與大家所熟悉的Linux Contianer容器模型一致,容器與底層操作系統(tǒng)共享內核,所以它們會很輕量而且運行迅速。當你在容器中啟動一個進程的時候,這個進程實際上運行在宿主機上,你可以使用任務管理器或者Powershell 命令 Get-Process 獲取到這個進程的信息。
Hyper-V Contianer則是一種全新的容器運行時模型,它將在宿主機上啟動一個很小的虛擬機,所以容器將具備自己獨立的操作系統(tǒng)內核。當你在Hyper-V Container中啟動進程的時候,宿主機對這個進程是無感知的。Hyper-V Container提供了更好的隔離性,而且這個虛擬機被裁減得非常小,所以性能仍然會不錯。在Windows Server 2016上,你可以在2種不同的運行時之間選擇;而Windows 10上雖然也提供了容器服務,但是只能運行Hyper-V Contianer。
無論是哪種運行時,你都可以使用標準的Docker命令行進行操作,同時容器鏡像的格式也和Linux容器鏡像保持一致。這意味著Windows Container 可以通過 docker hub 分發(fā),你之前在Linux容器上的經驗積累也可以被繼承到Windows容器上。
2. Windows Container 只能運行 Windows應用程序(至少現(xiàn)在是這樣)
很多朋友都問過這個問題:我是不是可以在Windows容器服務中運行Linux應用,或者反過來。Docker很厲害,但還木有辣么厲害。你無法在Windows上直接運行Linux進程,同樣你也無法在Windows Container中運行Linux進程。這個情況對于以上提到的2中運行時都適用,無論哪種運行時模型