容器和虛擬機的區別


轉載自https://blog.csdn.net/xiangxianghehe/article/details/70568448

1.容器技術簡介

對於容器,它首先是一個相對獨立的運行環境,在這一點有點類似於虛擬機,但是不像虛擬機那樣徹底。在容器內,應該最小化其對外界的影響,比如不能在容器內把宿主機上的資源全部消耗,這就是資源控制。

2.容器與虛擬機的區別

容器和虛擬機之間的主要區別在於虛擬化層的位置和操作系統資源的使用方式。
  • 1
  • 2

  容器與虛擬機擁有着類似的使命:對應用程序及其關聯性進行隔離,從而構建起一套能夠隨處運行的自容納單元。此外,容器與虛擬機還擺脫了對物理硬件的需求,允許我們更為高效地使用計算資源,從而提升能源效率與成本效益。
  
  虛擬機會將虛擬硬件、內核(即操作系統)以及用戶空間打包在新虛擬機當中,虛擬機能夠利用“虛擬機管理程序”運行在物理設備之上。虛擬機依賴於hypervisor,其通常被安裝在“裸金屬”系統硬件之上,這導致hypervisor在某些方面被認為是一種操作系統。一旦 hypervisor安裝完成, 就可以從系統可用計算資源當中分配虛擬機實例了,每台虛擬機都能夠獲得唯一的操作系統和負載(應用程序)。簡言之,虛擬機先需要虛擬一個物理環境,然后構建一個完整的操作系統,再搭建一層Runtime,然后供應用程序運行。
  
   對於容器環境來說,不需要安裝主機操作系統,直接將容器層(比如LXC或libcontainer)安裝在主機操作系統(通常是Linux變種)之上。在安裝完容器層之后,就可以從系統可用計算資源當中分配容器實例了,並且企業應用可以被部署在容器當中。但是,每個容器化應用都會共享相同的操作系統(單個主機操作系統)。容器可以看成一個裝好了一組特定應用的虛擬機,它直接利用了宿主機的內核,抽象層比虛擬機更少,更加輕量化,啟動速度極快。

  相比於虛擬機,容器擁有更高的資源使用效率,因為它並不需要為每個應用分配單獨的操作系統——實例規模更小、創建和遷移速度也更快。這意味相比於虛擬機,單個操作系統能夠承載更多的容器。雲提供商十分熱衷於容器技術,因為在相同的硬件設備當中,可以部署數量更多的容器實例。此外,容器易於遷移,但是只能被遷移到具有兼容操作系統內核的其他服務器當中,這樣就會給遷移選擇帶來限制。
  
  因為容器不像虛擬機那樣同樣對內核或者虛擬硬件進行打包,所以每套容器都擁有自己的隔離化用戶空間,從而使得多套容器能夠運行在同一主機系統之上。我們可以看到全部操作系統層級的架構都可實現跨容器共享,惟一需要獨立構建的就是二進制文件與庫。正因為如此,容器才擁有極為出色的輕量化特性。
  
  對Docker稍有接觸的人應該都見過下圖,無需更多解釋,Docker減少Guest OS這一層級,所以更輕量和更高性能。
  docker虛擬機區別
  
  
3.深層區別:
  docker虛擬機區別

更新:Docker現在已經支持windows平台,所以上面的Windows支持一欄可以忽略。


免責聲明!

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



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