容器虛擬化技術是一種有效的將單個操作系統的資源劃分到獨立的組中的技術,以便更好地在獨立的組之間平衡有沖突的資源使用需求。這種技術通過“偽造”操作系統的接口,將函數庫層以上的功能置于操作系統上,從而實現應用程序級別的虛擬化。容器提供了將應用程序的代碼、運行時、系統工具、系統庫和配置打包到一個實例中的標準方法,容器共享一個內核(操作系統),它安裝在硬件上。與虛擬機技術相比,容器化技術體積更小,理論上占用資源更少,因為它直接在宿主機操作系統的基礎上開啟一個進程,各個容器共享宿主機的硬件資源和操作系統,可以實現資源的動態分配,并且啟動容器就是啟動一個進程,速度很快,應用程序直接在各個容器內運行,互不影響,資源和時間開銷都很低。
容器虛擬化技術的主要特點包括:
1、 輕量級:容器虛擬化不需要為每個容器運行完整的操作系統,它們共享主機的操作系統內核,因此容器的啟動和停止時間更快,資源占用更少。
2、 高性能:由于容器共享主機的操作系統內核,容器化應用程序直接運行在宿主操作系統上,無需額外的虛擬化層,因此具有較低的性能開銷。
3、 可移植性:容器化應用程序打包成容器鏡像,鏡像包含了應用程序及其所有依賴項,可以在不同的環境中進行部署和遷移,實現了應用程序的可移植性。
4、 靈活性:容器化應用程序可以快速啟動、停止和擴展,容器之間的資源隔離程度可根據需求進行調整,從而實現靈活的資源管理。
5、 管理簡單:容器虛擬化技術提供了豐富的工具和平臺來管理容器,如Docker和Kubernetes等,這些工具可以簡化容器的創建、部署、監控和擴展等操作。
容器虛擬化技術在云計算、微服務架構和持續集成/持續交付 (CI/CD) 等場景中得到廣泛應用。它提供了一種輕量級、靈活和高效的應用程序部署和管理方式,幫助企業實現快速交付和高可用性的應用程序環境。
容器技術已經引起了業內的廣泛關注,有充分的證據表明,容器技術能夠大大提升工作效率。
虛擬化技術已經成為一種被大家廣泛認可的服務器資源共享方式,它可以在按需構建操作系統實例的過程當中為系統管理員提供極大的靈活性。由于hypervisor虛擬化技術仍然存在一些性能和資源使用效率方面的問題,因此出現了一種稱為容器(Container)的新型虛擬化技術來幫助解決這些問題。
起初,大家普遍認為基于hypervisor的方式可以在最大程度上提供靈活性。所有虛擬機實例都能夠運行任何其所支持的操作系統,而不受其他實例的影響。然而,越來越多的用戶發現hypervisor提供這樣一種廣泛支持的特性其實是在給自己制造麻煩。對于hypervisor環境來說,每個虛擬機實例都需要運行客戶端操作系統的完整副本以及其中包含的大量應用程序。從實際運行的角度來說,由此產生的沉重負載將會影響其工作效率及性能表現。
首先,每種操作系統和應用程序堆棧都需要使用DRAM。對于多個運行簡單應用程序的小型虛擬機實例來說,這種方式可能產生很大的系統開銷,降低性能表現。加載并卸載這些堆棧鏡像需要花費很長時間,并且還會增加容器技術服務器的網絡連接數量。對于極端情況來說,如果用戶在上午9點同時啟動上千臺虛擬桌面,還有可能導致網絡風暴的發生。
部署虛擬服務器的目的之一在于快速創建新的虛擬機實例。然而從網絡存儲當中復制鏡像需要花費大量時間,這些操作會延長啟動過程,無疑會限制系統靈活性。
因此我們可以選擇使用容器技術。只需要通過簡單的觀察我們便能夠發現容器技術的出現是為了解決多操作系統/應用程序堆棧的問題:
-
在單臺服務器當中為所有虛擬機實例使用相同的操作系統對于大部分數據中心來說都不算是真正的限制。流程管理(Orchestration)可以輕松處理這種變化
-
許多應用程序堆棧都是相同的(如LAMP)
-
對于大規模集群來說,在本地硬盤當中存儲操作系統副本將會使得更新過程變得更為復雜
最為重要的是,容器技術可以同時將操作系統鏡像和應用程序加載到內存當中。還可以從網絡磁盤進行加載,因為同時啟動幾十臺鏡像不會對網絡和存儲帶來很大負載。之后的鏡像創建過程只需要指向通用鏡像,大大減少了所需內存。
容器技術能夠在同一臺服務器上創建相比于之前兩倍的虛擬機實例數量,因此無疑將會降低系統總投入。但是必須認真進行規劃,因為雙倍的實例數量同樣意味著對于運行這些實例的服務器帶來了雙倍的I/O負載。
我們需要了解除了避免可能發生的啟動風暴之外,容器技術是否還有任何其他性能方面的優勢。能否改進IOPS?能夠提升網絡連接效率并且降低容器間的延遲,解決伴隨實例數量增加而產生的問題?
美國某傳統服務器大廠商的某實驗室完成了至今為止大部分權威實驗,其研究結果表明容器技術相比于hypervisor,容器技術的許多關鍵指標都有重大改進。在進行的所有測試當中,容器技術幾乎擁有和本地平臺一樣的運行速度,盡管網絡延遲測試還沒有完成。
上述廠商的研究表明容器技術在多個領域當中都比hypervisor擁有更好的性能表現。容器技術的運行速度幾乎是hypervisor的兩倍,在評分當中非常接近于本地操作系統。在和KVM的對比當中,容器技術在硬盤隨機讀取(84,000 vs 48,000 IOPS)和寫入(110,000 vs 60,000 IOPS )方面擁有非常優秀的表現,如果使用本地固態硬盤可以實現更好的SQL性能表現。
高性能計算(HPC)社區也在轉而使用虛擬化和容器技術。一項由巴西天主教大學進行的研究已經取得了一定成果。
“如果可以降低基本的系統開銷(比如CPU、內存、硬盤和網絡),那么HPC無疑會選擇使用虛擬化系統,”研究人員表示。“從這個角度來說,我們發現所有基于容器的系統在CPU、內存、硬盤和網絡方面都擁有接近于本地操作系統的性能表現。”
為了擴展適用范圍,容器技術仍然需要在安全方面不斷改進,我們可以看到的是這種方式可以解決hypervisor虛擬化當中的大多數性能問題。再加上更加輕松和快捷的部署方式,容器技術將會在不久的將來占據虛擬化市場。?[1]