2016年12月20日 星期二

Windows Container

Container是什麼?

    Container技術近年在雲端虛擬化應用的蓬勃發展之際,以及Docker、Google等國際系統廠商所引領的風潮下迅速發展,將Container技術系統化建構及運用模式推向另一個層次,促使全球資訊產業重新思考新型態的應用服務架構。看到這邊,或許有些人對Container這個詞還是有些陌生,接下來來介紹一下什麼是Container吧,首先透過以下的圖,讓大家能更清楚Container的架構






   
     Container(容器)技術是一種以應用程式為中心的虛擬化技術,不需要安裝Guest OS,更方便地將應用程式所需的執行環境封裝起來,簡化複雜的IT架構方便管理、移動或部署各種應用程式,而不需要開發人員自行管理「執行這個應用程式所需的眾多目錄與大量檔案」。


    傳統虛擬化技術從作業系統層著手,目標是建立一個可以用來執行整套作業系統的沙箱獨立執行環境,習慣以虛擬機器(Virtual Machine)來稱呼。虛擬機器以軟體模擬出vCPU、vRAM等實體伺服器的功能,讓作業系統看起來是處於實體機器中,所以可以在這個虛擬機器中安裝各種作業系統,接著安裝應用程式所需的執行環境,例如:資料庫程式、Web伺服器、中介軟體等。傳統的虛擬化技術能將軟體和硬體的相依關係切開,讓軟體盡可能地不用綁定於特定廠牌或規格的硬體。
    

    傳統虛擬機器的優點是安全性高,對作業系統而言,看起來就像在一台正常的實體機器中,就算多個虛擬機器在同一台實體伺服器中執行,虛擬機器間也不會知道彼此的存在。因此出現了Host OSGuest OS的架構,Host OS負責執行虛擬化的平台,Guest OS則在虛擬化平台內建立虛擬機器。


    但是將作業系統打包進虛擬機器的後果是,任何虛擬機器都必須先安裝好一套作業系統後才可以開始執行應用程式,不僅導致虛擬機器的建立速度,受限於作業系統的開機速度,必須等上數十秒到數分鐘才能新增一個虛擬機器。虛擬機器的映像檔所需容量也不小,即使要執行的程式碼只有10 KB,也必須安裝一整套上百MB的作業系統軟體才行。執行作業系統本身也得消耗不少的運算資源,假設一台實體伺服器內要執行100個虛擬機器,就等同於要執行一百套Guest OS,即使虛擬化技術有許多改良來解決運算資源的利用率,但Guest OS仍然瓜分了不少應用程式能用的實際運算資源。


    另外一種虛擬技術Container,不是在OS外來建立虛擬環境,而是在OS內的核心系統層來建置虛擬機器,透過共用Host OS的作法,取代多個Guest OS的功用。Container也因此被稱為OS層的虛擬化技術。


    Container直接將一個應用程式所需的相關程式碼、函數庫、環境配置檔都打包起來,並建立了嚴格的資源控管機制來分配Host OS上的系統資源,避免因這個Container占用資源或當機時,而影響了Host OS或其他Container的執行。


    因為Container是利用系統核心控管機制來分配Host OS資源,也就不需要另外安裝Guest OS個別管理。換句話說,當一台實體伺服器內建立了100個Container時,這100個Container共用一個Host OS的核心,再利用OS內建機制來分配每一個Container可用的資源。因為Container不需要執行OS,因此一台實體伺服器可以執行的Container數量,遠遠超過傳統虛擬化技術的虛擬機器,甚至可以有數倍的差異。一台有能力執行100個測試環境VM的實體伺服器,通常能執行2、3百個用Container提供的測試環境。這批Container的映像檔案所需儲存空間,也因為不用安裝整套OS而比用VM映像檔來得少。不論處理器資源或儲存空間的利用上,Container技術都遠優於伺服器虛擬化技術。




沒有留言:

張貼留言