虛擬化 VS 容器化

2021-09-22 23:17:12 字數 1752 閱讀 5176

本文講的是虛擬化 vs 容器化

【編者的話】以 docker 為代表的容器技術一度被認為是虛擬化技術的替代品,然而這兩種技術之間並不是不可調和的。作者分別列舉了容器技術以及虛擬化技術的優缺點,並提出將兩者結合取長補短的解決方案。

容器為應用程式提供了隔離的執行空間:每個容器內都包含乙個獨享的完整使用者環境空間,並且乙個容器內的變動不會影響其他容器的執行環境。為了能達到這種效果,容器技術使用了一系列的系統級別的機制諸如利用linux namespaces來進行空間隔離,通過檔案系統的掛載點來決定容器可以訪問哪些檔案,通過cgroups來確定每個容器可以利用多少資源。此外容器之間共享同乙個系統核心,這樣當同乙個庫被多個容器使用時,記憶體的使用效率會得到提公升。

對於系統虛擬化技術來說,虛擬層為使用者提供了乙個完整的虛擬機器:包括核心在內的乙個完整的系統映象。cpu虛擬化技術可以為每個使用者提供乙個獨享且和其他使用者隔離的系統環境,虛擬層可以為每個使用者分配虛擬化後的cpu、記憶體和io裝置資源。

哪家強?

通常來說,這取決於你的需求。如果你只是希望將應用執行的例項進行隔離,那麼對於管理應用執行環境、啟動應用例項以及控制資源開銷方面容器將是乙個極為高效的工具。像docker這一類的容器,其設計原則就是為了解決這種應用環境的修改以及應用部署的問題,並且這十分符合devops理念(你可能希望知道更多關於devops理念的內容)。

如果你從伺服器虛擬化的角度來尋找最好的環境隔離方案,那麼系統級的虛擬化是更好的方案:和容器相比,鄰居租戶(noisy neighbours )對系統的影響在虛擬化的方案下將不是乙個問題。儘管現在很多容器都在專注於提高其隔離能力,但是虛擬機器的隔離還是要優於容器。從物理伺服器過渡到虛擬伺服器是乙個很自然的過程,並且現在針對虛擬伺服器的管理的生態系統也很完善。

在z系統中,linux具有很好的伸縮性(執行容器),但是z是乙個極度高效虛擬化(執行虛擬伺服器)的平台,它繼承了整個系統架構。儘管沒有精確的測量,將虛擬化和容器技術相結合,在z系統中會比其他平台要容易。

還有第三條路:兩者兼而有之。

有多種方式可以將系統虛擬化及容器技術相結合:

1.乙個容器中執行乙個虛擬機器

docker在部署容器方面十分靈活。其中乙個選擇(execution driver)是利用kvm映象。這樣就可以在最好的隔離性情況下發揮devops所擅長的使用docker各種方式。但是這也付出了需要在啟動容器時啟動整個作業系統例項的代價。這也就意味著較長的啟動時間以及低效的記憶體使用,只能通過核心共享記憶體(ksm)來提公升記憶體利用率。這種方法效果和效率都不理想,但是這是乙個好的開始。

2.乙個虛擬機器中執行乙個容器

與之相反的,你一可以在虛擬機器中啟動乙個容器。這裡的虛擬機器並不是由docker控制,而是通過現有的虛擬化管理設施來控制。一旦系統例項啟動,就可以通過docker來執行容器而**其他特殊的設定。同時,由於不同容器執行在不同的虛擬機器上,容器之間也能有很好的隔離。而記憶體的使用率需要通過虛擬層的記憶體共享來提公升。

2b.乙個虛擬機器中執行多個容器

對於多租戶的情況,可以用另一種形式在虛擬機器中執行docker。這種情況下,我們假設在不同租戶的容器之間需要強隔離,而對於同一使用者的不同容器,簡單的linux容器隔離已經足夠。這樣我們就可以在減少虛擬機器個數的情況下保證租戶之間的隔離,同時可以利用docker帶來的各種便利。

總結來說:需要根據實際需求進行選擇。

===========================

譯者介紹

劉夢馨,乙個做過前端、後端和測試的運維人員,在阿里巴巴挖寶,順便去點亮 dba 的技能樹。關注docker,虛擬化和雲計算技術。

原文發布時間為:2015-04-19

虛擬化 VS 容器化(docker)

以 docker 為代表的容器技術一度被認為是虛擬化技術的替代品,然而這兩種技術之間並不是不可調和的。作者分別列舉了容器技術以及虛擬化技術的優缺點,並提出將兩者結合取長補短的解決方案。容器為應用程式提供了隔離的執行空間 每個容器內都包含乙個獨享的完整使用者環境空間,並且乙個容器內的變動不會影響其他容...

虛擬化與容器化

安裝 1.使用root許可權操作 安裝命令 yum install docker 2.檢查安裝是否成功 檢查命令docker version 若輸出了 docker 的版本號,說明安裝成功了,可通過以下命令啟動 docker 服務 3.docker啟動命令service docker start 一...

虛擬化向容器化發展

1 容器更加輕量級,允許在相同的硬體上執行更多數量的元件。每個虛擬機器需要執行自己的一組系統程序,程序是執行在不同的作業系統上的。而乙個容器僅僅是執行在宿主機上被隔離的單個程序,僅消耗應用容器消耗的資源,不會有其他程序的開銷。容器低消耗。2 虛擬機器提供完全隔離的環境,每個虛擬機器執行在它自己的li...