虛擬機 (VM) 和容器是互補且相似的 - 兩者都提高了 IT 效率、應用程序可移植性并增強了 DevOps。但是,了解它們之間的區別是開發敏捷、云原生、應用程序驅動戰略的關鍵組成部分。
- VM通過讓組織充分利用服務器并促進有限的工作負載可移植性來解決基礎架構問題。
- 容器通過改進DevOps、啟用微服務、增加可移植性和進一步提高資源利用率來解決應用程序問題。
容器和虛擬機之間的核心區別是什么?
VM 包括客戶操作系統 (OS) 及其應用程序和應用程序依賴項的所有代碼,這些代碼以前在單個服務器上或從服務器池中運行。VM 映像的大小通常以千兆字節為單位。多個 VM 可以存在于單個物理服務器上,即使它們運行在不同的操作系統上。虛擬機從底層硬件中抽象出服務器,并且通常會在其整個使用壽命期間持續存在。
容器共享主機操作系統并且僅包含應用程序及其依賴項。容器映像的大小通常以兆字節為單位。在單個服務器上運行的每個容器都共享相同的底層操作系統。因此,容器可以在幾毫秒內啟動,并且對于實例必須隨著需求的變化而啟動和關閉的臨時用例更有效。
總而言之,VM 和容器有何不同?
盡管容器和虛擬機都有助于提高 IT 資源的利用率,但各有利弊。虛擬機已經存在了幾十年,它允許企業將運行不同應用程序的多臺服務器組合到單個物理服務器上,即使它們運行不同的操作系統。這大大節省了服務器硬件和軟件,因為過去在多臺服務器上運行的現在運行在單個服務器上。虛擬機也是大多數云服務的基礎。AWS、Azure 和其他公共云使用 VM 作為其標準產品之一。但是,由于它們將整個服務器封裝在每個虛擬機中,VM 所需的 CPU 和 RAM 量可能會變得笨拙,并限制單個服務器上可以存在的 VM 數量。
自 2013 年 Docker 發布以來,容器迅速普及,部分原因是為了應對虛擬機消耗的大量開銷。由于容器運行在服務器的操作系統上,它們共享單個操作系統實例和其他二進制文件和庫,因此容器只需要包含應用程序代碼,無論是單個單體應用程序的形式,還是捆綁在一個或多個容器中的微服務的形式包含業務功能。
因此,雖然虛擬機讓組織可以在單個硬件上運行多個虛擬服務器——不管它們的操作系統如何,容器提供輕量級、高密度的應用程序虛擬化、在幾秒鐘內啟動和關閉應用程序和實例的能力,以及一些措施在它們自己的容器中分離應用程序所固有的安全性。
虛擬機的優缺點是什么?
虛擬機優點:
- 數十年的虛擬化專業知識支持訪問一組強大的 VM 管理和安全工具
- VM 提供了在單個基礎架構上運行需要不同操作系統的多個應用程序的能力
- VM 模擬整個計算環境,包括所有操作系統資源
- VM 簡化了本地和基于云的平臺之間的可移植性和遷移
- 有一個龐大的、成熟的 VM 生態系統和市場,其中包括 VMware 等行業領導者
虛擬機缺點:
- VM 映像通常消耗千兆字節,因此需要更長的時間來備份或在平臺之間遷移
- 因為它們封裝了包括操作系統在內的整個服務器,所以物理服務器可以支持比容器更少的虛擬機
- 虛擬機啟動時間可能需要幾分鐘
容器的優缺點是什么?
容器優點:
- 容器比虛擬機更輕量級,因為它們的圖像以兆字節而不是千兆字節為單位
- 容器需要更少的 IT 資源來部署、運行和管理
- 容器在幾毫秒內啟動
- 由于它們的數量級較小
- 與虛擬機相比,單個系統可以托管更多的容器
容器缺點:
- 所有容器必須在相同的操作系統上運行——不能混合和匹配操作系統或版本
- 容器可能不如虛擬機安全,因為底層操作系統是共享的
- 容器是一項較新的技術,生態系統仍在不斷發展
傳統與新興 IT 實踐中如何使用容器?
虛擬機已經并將繼續在將遺留應用程序遷移到云和混合環境中發揮作用。由于 VM 的成熟度,對于那些已經融入圍繞 VM 的 IT 架構的組織而言,它們具有很高的舒適度以及水平或慣性。因此,VM 將繼續成為許多持久的、單一的、企業應用程序的首選抽象解決方案,尤其是那些不經常更新的應用程序。
但是,容器適合現代實踐和用例,例如敏捷、DevOps 環境中的 CI/CD。容器增強了應用程序在截然不同的配置之間的可移植性,因此在筆記本電腦上開發并在沙盒中測試的應用程序可以在云中運行,無需進行任何更改即可支持所有三種環境。容器還提供近乎無限的可擴展性。將用戶交互與后端處理分開的基于微服務的應用程序允許前端和后端分別擴展,而輕量級容器意味著幾乎可以根據需要即時啟動新實例。此外,采用微服務方法進行開發鼓勵在多個應用程序和業務流程之間共享通用的微服務例程,從而進一步提高開發人員的效率。
虛擬機在新興 IT 實踐中的角色如何轉變?
隨著機器學習和人工智能 (ML/AI) 應用程序深入企業,這些資源密集型應用程序將有利于部署虛擬機。此外,需要更多邊緣計算能力的新網絡架構(如 5G)將有利于虛擬機來完成這些軟件定義網絡的繁重工作。
容器將在需要可擴展性的現代、面向客戶的應用程序和 Web 服務的世界中茁壯成長,這要歸功于其近乎瞬時的啟動時間,并且容器超越了作為開發平臺,因為編碼人員不再需要擔心如何開發基礎設施因部署基礎設施而異。最后,由于容器最初設計為瞬態的,因此它們很適合網絡守護程序、緩存和 Web 服務功能。
容器會取代虛擬機,還是相互補充?
容器和虛擬機都將繼續發揮重要作用。容器可以在虛擬機上運行,??使組織能夠利用其現有工具進行自動化、備份和監控。VM 上的容器使 IT 能夠使用現有的精通 VM 的團隊來管理容器化環境。隨著企業尋求以新的方式利用其基礎架構或云的力量來支持重型應用程序和網絡工作負載,虛擬機將擁有新的用例。