『現學現忘』Docker相關概念 — 8、虛擬化技術和容器技術的關系


1、雲計算中虛擬化技術和容器技術到的關系

通過一個關於房間和住人的小問題,我們來初步的理解一下虛擬化技術和容器技術的關系。

首先有一個大前提就是一個房間只允許一家人來住。這個房間很大,500平米,有床、有廚房、有衛生間。你一家一共就3口人,就你一家人住,別人家只好再找房子,好浪費,資源利用率好低啊。(房子就相當於計算機的硬件基礎)

首先是虛擬化上場了,把這個大房子從隔成20間小房子。注意不是那種真砌牆的方式來分隔,而是比如拉上布簾的方式。(不是把硬件真正的分割,而是按需求,虛擬分割。)注意,每個小“房間”是一個獨立的空間,都有床、有廚房、有衛生間。這樣就可以住20戶人家了。這樣資源利用率真就提高了,但還是有問題,廚房、衛生間並不是這20家人都會同時使用的啊。(廚房、衛生間相當於Guest OSHost OS操作系統)

此時,該容器上場了!還是剛才500平的那個大房間。容器也是分隔,由於並不是每家人都要同時使用廚房、衛生間。所以可以把剛才的房間隔成50間,每家只有床是獨立的。廚房和衛生間則采用公共的,按使用情況進行分配即可。這樣就能住50家人了,資源利用率真就大大提高了。(只留下Host OS操作系統,去掉了占用過多無效資源的Guest OS操作系統)

所以說,容器是一種輕量級的虛擬化技術,在同等配置的服務器上,容器技術能夠輕松更多的應用。對於每一個容器,他們其實是使用同一個宿主機的內核和系統庫文件(相當於剛才說的公開衛生間和廚房)。

2、虛擬機和容器對比

這里我們直接通過虛擬機和容器技術的剖析圖來分析,就更容易看出容器虛擬化是如何在效率上完勝虛擬機的。

下面兩張圖很清楚的說明了虛擬機和容器差別:

image

由於沒有了虛擬操作系統和虛擬機監視器這兩個層次,大幅減少了應用程序運行帶來的額外消耗。

更准確的來說,所有在容器中的應用程序,其實完全運行在了宿主操作系統中,與其他真實運行在其中的應用程序,在指令運行層面是完全沒有任何區別的。

下表總結了使用Docker容器技術與傳統虛擬機技術的特性比較。

image

3、虛擬化技術和容器技術區別

傳統虛擬化技術從操作系統層下手,目標是建立一個可以用來執行整套操作系統的沙盒獨立執行環境,習慣以虛擬機(Virtual Machine)來稱呼。

Container技術則是直接將一個應用程序所需的相關程序代碼、函式庫、環境配置文件都打包起來建立沙盒執行環境,Container技術產生的環境就稱為Container

(1)兩者具體區別

  • 虛擬機需要安裝操作系統(安裝Guest OS)才能執行應用程序,而Container內不需要安裝操作系統就能執行應用程序
  • Container技術不是在OS外在建立虛擬環境,而是在OS內的核心系統層來打造虛擬執行環境,透過共享Host OS的作法,取代一個一個Guest OS的功用。Container也因此被稱為是OS層的虛擬化技術。

(2)Container是輕量級虛擬化技術

Container技術采取共享Host OS的作法,而不需在每一個Container內執行Guest OS,因此建立Container不需要等待操作系統開機時間,不用1分鍾或幾秒鍾就可以啟用,遠比需要數分鍾甚至數十分鍾才能開啟的傳統虛擬機來的快。

參考:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM