容器與虛擬機的區別(譯)

翻譯,原文請見https://www.backblaze.com/blog/vm-vs-containers/

在這裏插入圖片描述

容器和虛擬機都能很好地利用計算機軟硬件資源,當然容器技術是新興的,並且在各種數據中心變得非常流行。如果你正在尋找如何在雲上運行服務的方案,那麼需要了解這些虛擬化技術,它們之間有何異同,最合適的使用場景,這裏是我們的快速入門。

基本定義 — 虛擬機和容器

什麼是虛擬機

虛擬機是一個計算機系統的仿真,簡單來說,虛擬機可以實現在一臺物理計算機上模擬多臺計算機運行任務。
操作系統和應用共享一臺或多臺主機(集羣)的硬件資源,每臺VM有自己的OS,硬件資源是虛擬化的。管理程序(hypervisor)負責創建和運行VM,它連接了硬件資源和虛擬機,完成server的虛擬化。
由於虛擬化技術和雲服務的出現,IT部門通過部署VM可以可減少cost提高效率。
在這裏插入圖片描述
VMs也消耗大量系統資源,每個VM不僅運行一個OS的完整copy並且需要所有硬件的虛擬化copy,這消耗大量RAM和CPU。相比單獨計算機,VM是比較經濟的,但對於一些應用VM是過度浪費的,需要容器。

虛擬機的好處

  • APPs可以使用所有OS資源
  • 已有管理工具
  • 已有安全工具
  • 更好的安全控制

什麼是容器

容器是將操作系統虛擬化,這與VM虛擬化一個完整的計算機有所不同。
容器是在操作系統之上,每個容器共享OS內核,執行文件和庫等。共享的組件是隻讀的,通過共享OS資源能夠減少復現OS的代碼,意味着一臺server僅安裝一個OS可以運行多個任務。容器是非常輕量的,僅僅MB水平並且幾秒即可啓動。相比容器,VM需要幾分鐘啓動,並且大小也大很多。
與VM相比,容器僅需OS、支撐程序和庫文件便可運行應用,這意味你可以在同一個server上相比VM運行2-3倍多的應用,並且,容器能幫助創建一個可移植的,一致的開發測試部署環境。
在這裏插入圖片描述
容器類型

  • Linux Container(LXC) LXC是一種OS Level的虛擬化方法,可以實現在一臺主機運行多個Linux操作系統。
  • Docker Docker開始項目是構建單一應用的LXC容器,引入了一些使容器便於移植和靈活使用的改進,後來開發了自己的容器運行環境。概況來說,Docker是一個Linux工具,能夠創建,移植和運行容器

容器優勢

  • 減少IT管理資源
  • 減少snapshot大小
  • 更快的app開發部署
  • 減少和簡化安全更新
  • 更少的代碼傳輸,移植

虛擬機應用 vs 容器應用

虛擬機和容器都有優勢和劣勢,如何選擇取決於具體的需求,但有些規則可以參考。

  • VM非常適合當應用運行時需要所有OS資源和功能的場景,如果需要運行多個這樣的應該,可以使用VMs
  • 容器適合在更少的server上運行更多的應用。

在這裏插入圖片描述
對於大多數,理想的是同時使用VM和容器,VM的靈活性與容器的資源使用少可以共同滿足最大化的功能需求。
如果你的組織中正運行着大量的相同OS實例,你可以考慮容器是不是一個更好的選擇了,可以幫助減少大量時間和內存消耗。

相關閱讀
https://stackoverflow.com/questions/16047306/how-is-docker-different-from-a-virtual-machine

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章