Windows Server 2016不久之后就要正式發布了。Windows管理員如何為未來的Windows平臺上的容器技術做好準備呢?我們在采訪微軟Hyper-V MVP Thomas Maurer的過程中,Maurer給出了一些很好的建議。
最近幾年圍繞著容器總有一些爭議和議論。能否解釋一下容器為何物?容器對于Windows Server為何如此重要?
Maurer:就容器來說,有幾個詞很關鍵,能讓我理解容器的意義:操作系統級的虛擬化。如果你這樣考慮當今我們所應用的技術,包括Hyper-V、VMware或其他管理軟件,當我們安裝操作系統時,我們會創建虛擬的硬件。而對容器來說,我們創建的不是虛擬硬件,我們創建的基本是上是虛擬的操作系統容器。因此,我們在操作系統中虛擬化應用程序的操作系統或其他任務。因此本質上還是有挺大的區別。
在獨立性的問題上,我也嘗試著跟大家解釋容器基本上是介于處理流程和虛擬機之間的東西。它們并沒有虛擬機那般獨立,卻有著比虛擬機更少的開銷。然而它們還是需要運行在自己的環境之中。因此,一個處理流程連接到另一個,它們都有用這一獨立的容器,所以我說容器是介于處理流程和虛擬機之間的東西。在某種情況下容器非常“酷”。
你可以想象一下,它們是很輕量的。在同樣體量的硬件上,與虛擬機相比,你可以部署更多的容器,因為它們不需要操作系統的開銷,并且啟動也非常迅速,啟動一個新的容器只需要幾秒,甚至毫秒的時間。
而對于虛擬機來說,操作系統需要啟動。而使用容器,操作系統已經在運行了,因此無需啟動。你只需要創建一個應用程序可以運行的新環境,然后再花上幾毫秒啟動容器就可以了。
有些企業的客戶還是回來問我說,部署應用程序很難。那好,現在用容器了,我需要部署點什么呢?好像人們不太容易弄清需要做什么,目前微軟還沒有給出太多的說法,容器究竟是為誰設計的。它們只是提供了一種工具,具有新的功能和特點,微軟的技術人員也很好奇大家會用容器來做些什么。
當然,還是有些使用案例的。例如,辦公室中使用容器來測試應用程序。用容器來測試5個不同版本的應用程序,你只需要花費幾秒鐘時間來部署程序5次,而不需要像以前那樣部署5臺虛擬機分別測試5個不同的版本。特別適合開發/測試場景或DevOps場景時使用。如果你像部署網頁服務器那樣部署程序,你必須在短時間內運轉多個網頁服務器,容器可以幫助解決這一問題,看他們的操作過程會很有趣。
你是否見過像Exchange這樣的大型應用程序如何應用容器進行重制的過程嗎?
Maurer:不了解。Exchange的團隊很可能認為容器很酷,并打算用它來做些事情。然而就當前來說,容器還是更多的考慮用在無狀態使用中,或是無狀態應用以及其他類似的東西。要合理應用它,你真的要有個需要此類環境的程序來部署才行。你可以在容器內部調用程序,然后把數據存在容器之外的文件或數據庫或其他地方,這都是可行的。然而容器卻不是萬能的。
容器適用于某些情況,虛擬機也適用于另一些情況。我認為它們的應用前景并不沖突,反而應該協同工作。我們能夠預見到大型應用程序能夠應用容器技術。
微軟已公布Windows容器和Hyper-V容器。Nano Server在其中的作用是?
Maurer:有兩層意義。一是容器的運行時間,Nano Server是運行容器的引擎,既可以是Windows Server容器或是Hyper-V容器。不同之處在于Hyper-V容器有一些額外添加的獨立層,在某些應用場景下安全系數更高,但同時運行速度會比Windows Server要慢一點。
二是關乎容器的鏡像,也就是我們常說的模板。如果你要創建一個新的容器,通常都是基于容器的鏡像來完成的。
通過Windows Server 2016版本,微軟提供兩種容器鏡像。其一是Nano Server容器鏡像,其二是Server Core鏡像。通過它們,你可以從Nano Server或Server Core任選其一創建鏡像,在鏡像中可以安裝任何你所需要的應用程序。
舉個例子,你打算部署一臺IAS(internet authentication service,互聯網驗證服務)網頁服務器,你需要先安裝IAS的角色。你需要停止運行容器在其中創建一個新的容器鏡像,基本上是新建了一套模板。等到下次你調用一臺網頁服務器時,你只需要運行那個裝有IAS的容器鏡像,并進行多次部署就可以了。這臺IAS容器已經與操作系統Nano Server或Server Core的鏡像相連,我們需要做的僅僅調整這臺IAS網頁服務器的角色罷了。
你可以把不同內容堆起來并加上一些東西,再把它安裝到庫里,然后再部署或者再加點料。