主機級虛擬化與容器級虛擬化之間原理差異簡單介紹


原理簡述

主機級虛擬化與容器級虛擬化

**兩都之間的不同之處: **

  1. 主機級虛擬化技術:

    為每一個封閉的實例,提供的是一個從底層硬件開始一直到高層的基礎環境。也就意味着說我們每一個對應的虛擬機實例就擁有自己可視的,而且是隔離於其它實例的基礎硬件,包括CPU,內存等等,所以它在硬件完成資源划分以后,提供給了我們每一個實例一個基礎環境,使得我們每一個實例都得安裝操作系統,從而就擁有自己的內核空間和用戶空間,所以這么一來不當緊,做為當前實例的使用者,就得安裝操作系統,提供環境,安裝程序並提供配置文件,最終才可用服務。

    主機級虛擬化,由於做了兩級內核,虛擬機自己有一級,hypervisor會有性能損耗,但是隔離性是非常好的。但過於重量級。

  2. 容器級虛擬化技術:

為什么出現容器技術:

如果現在我打算在一台完全隔離的環境中,盡量不影響其它應用的情況下,安裝一個tomcat。做為一個程序猿來講,發部一個新程序就要運行在tomcat上測試下。這時候我提供給用戶的僅僅是一個虛擬機,即便安裝好操作系統,用戶還得安裝tomcat等,會非常麻煩,過程就感覺很重量。因為我們額外步驟會非常的多。所以這種虛擬化方式過於重量級,尤其在某些輕量級的需求面前它就顯得欲發重量。所以在這種情況下就出現了容器技術。

  • 容器技術:

用戶空間僅僅運行用戶進程而以,就不需要在主機級虛擬化技術上,它自己管理自己的內核,把虛擬出來的內核給剝離掉。給用戶一個chroot環境,在這個虛根下,能夠隔離和其它用戶相關的用戶環境。


在內核中的一個邏輯級別能夠設置為隔離開來的區域,彼此之間互相不干擾,不影響的話。那么我們就可以做出來僅在用戶空間,就能實現隔離的組件來。那這個在用戶空間就能實現的組件就稱為“容器”。每一個空間就稱為一個容器,因為每一個空間都容納了一堆的進程和用戶帳號文件等等

將內核分為多個空間,然后每個空間能夠提供一個完整意義上的程序運行環境,容納了文件,系統和進程以及彼此間職離的一些組件。我們把這些技術稱之為容器。

下圖很清楚的區分了vm與container之間的差別:


免責聲明!

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



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