為何要使用虛擬機和容器?| VMware
虛擬機 (VM) 和容器不僅相輔相成,也十分相似:兩者都可提高 IT 效率和應用程式可移植性,並強化開發營運。不過,瞭解兩者之間的差異,則為開發敏捷、雲原生且應用程式導向策略的重要關鍵。
- 虛擬機能協助企業進一步運用伺服器,並提高有限的工作負載可移植性,繼而解決多項基礎架構問題。
- 容器則可改善開發營運、啟用微服務、提高可移植性,並進一步改善資源利用率,從而解決多項應用程式問題。

《VMware Cloud Foundation 整合了 vSphere With Kubernetes》(VMware Cloud Foundation Integrates vSphere With Kubernetes)

《Kubernetes 在 VMware vSphere 上執行效果更佳的 5 大理由》(Top 5 Reasons Kubernetes Runs Better on VMware vSphere)
容器和虛擬機之間具有哪些重要差異?
虛擬機包含 Guest 作業系統 (OS),及其應用程式和應用程式相依性的所有程式碼;這些項目先前都是在單一伺服器上執行,或透過伺服器集區執行。虛擬機映像大小通常會以 GB 為測量單位。單一實體伺服器上可存在多個虛擬機,即使這些虛擬機是在不同作業系統上執行,也沒問題。虛擬機會將伺服器自底層硬體抽象化,而且通常會在整個生命週期期間持續存在。
容器會共用主機作業系統,且僅包含應用程式及其相依性。容器映像大小通常會以 MB 為測量單位。在單一伺服器上執行的每個容器,都會共用相同的底層作業系統。因此,容器可在數毫秒內完成擴充,可在短期使用情境中提供更高效率;在這類情境中,執行實例必須配合需求變化來加以擴充或縮減。
簡單來說,虛擬機和容器有何不同?
雖然容器和虛擬機都有助於改善 IT 資源的利用率,但兩者都有各自的優缺點。虛擬機問世至今已數十年,可協助企業將執行不同應用程式的多部伺服器整合於單一實體伺服器上,即便每部伺服器執行不同的作業系統,也沒問題。由於過去需要使用多部伺服器執行的項目,現在可改為在單一伺服器上執行,企業可從中省下龐大的伺服器軟硬體成本。此外,虛擬機也是多數雲端服務的基礎。舉凡 AWS、Azure 和其他公有雲,都將虛擬機做為標準產品方案之一。不過,由於他們會將整個伺服器封裝在每個虛擬機中,虛擬機所需的 CPU 和 RAM 數量可能相當驚人,而單一伺服器上存在的虛擬機數量也有一定限制。
自 Docker 於 2013 年推出以來,容器正快速普及化,而因應虛擬機在使用上的額外負荷,也成為幕後推手之一。容器位於伺服器的作業系統中,因此它們會共用單一作業系統執行實例和其他二進位檔及資料庫;有鑑於此,容器僅需包含應用程式的程式碼,無論其為單體應用程式,或是整合在一個或多個容器內,以涵蓋某項業務功能的多個微服務。
整體而言,虛擬機可讓企業在單一硬體上執行多部虛擬伺服器,且無須考量其作業系統,容器則能提供輕量、高密度的應用程式虛擬化;在數秒內擴充和縮減應用程式與執行實例;以及具備某些內建的安全機制,可將應用程式隔離在專屬的容器中。
虛擬化的優缺點為何?
虛擬機的優點:
- 虛擬機累積了數十年的虛擬化專業能力,可取得豐富的虛擬機管理和安全性工具
- 虛擬機可在單一基礎架構中,執行多個需要不同作業系統的應用程式
- 虛擬機能模擬整個運算環境,包括所有作業系統資源
- 虛擬機可簡化地端和雲端式平台之間的可移植性及移轉作業
- 虛擬機坐擁龐大且完善的商業網路和市場,當中更有 VMware 等業界領導者參與其中
虛擬機的缺點:
- 虛擬機映像通常會佔用數 GB 的空間,因此無論進行備份,或在不同平台之間移轉,都需耗費較多時間
- 由於虛擬機會封裝整個伺服器 (包括作業系統),單一實體伺服器可支援的虛擬機數量較容器更少
- 擴充虛擬機可能需耗費數分鐘之久
容器的優缺點為何?
容器的優點:
- 容器比虛擬機更輕,其映像大小的單位為 MB,而非 GB
- 容器能透過更精簡的 IT 資源來部署、執行和管理
- 容器因其規模較小,
- 可在數毫秒內擴充
- 單一系統可代管的容器數量較虛擬機更多
容器的缺點:
- 所有容器都必須在相同作業系統上執行,不得混合搭配多個作業系統或版本
- 鑑於容器會共用底層作業系統,安全性可能較虛擬機低
- 容器為較新的技術,商業網路仍持續進化中
容器會如何運用在傳統和新興 IT 實踐方式中?
針對將舊版應用程式移轉至雲端和混合式環境,虛擬機正扮演著一大要角,而日後也將繼續發揮效用。由於虛擬機已相當成熟,許多運用虛擬機技術來建置 IT 架構的企業,都對其深具信心,且傾向安於現狀。正因如此,虛擬機將持續成為眾多持續性、單體和企業應用程式的首選抽象化解決方案,特別是無需頻繁更新的應用程式。
不過,容器則適用於現代化實踐方式和使用情境,例如敏捷式開發營運環境中的 CI/CD。容器可強化應用程式在眾多不同設定之間的可移植性,這樣一來,在筆記型電腦上開發,並於沙箱中完成測試的應用程式,就能在雲端中執行,而且無需做出變更,即可支援上述三種環境。此外,容器也享有近乎無限的延展性。將使用者互動和後端處理區隔開來的微服務式應用程式,可讓前端和後端各自進行擴充,由於容器具有輕量型的特性;這也意味著,您可依照需求,透過近乎即時的方式擴充新的執行實例。此外,採用微服務開發方法,也有助於在多個應用程式和業務流程之間共用通用的微服務例行程序,以進一步提高開發人員的效率。
虛擬機正如何革新新興 IT 實踐方式?
隨著機器學習和人工智慧 (ML/AI) 應用程式逐漸深入企業領域,這些需仰賴大量資源的應用程式,將偏好使用虛擬機來部署。此外,5G 等嶄新網路架構也講求更高的邊緣運算能力,因此勢必將更需要透過虛擬機,以完成這些軟體定義網路的繁重作業。
在現代化的客戶導向應用程式和網頁服務等領域,容器可望能蓬勃發展;畢竟,這些領域皆注重近乎即時的啟動時間,因而需要具備延展性,而容器則可發揮超越開發平台的優勢,讓程式碼編寫人員再也無需擔心不同部署基礎架構的差異。
最後,由於容器的原始設計用意,在於保有暫時性,因此相當適合運用在網路 Daemon、快取和網頁服務功能上。
容器將取代虛擬機嗎?或是兩者可相輔相成?
容器和虛擬機都將持續扮演重要角色。容器可在虛擬機上執行,如此一來,企業就能運用其現有工具來進行自動化、備份和監控。虛擬機上的容器也能讓 IT 使用精通虛擬機的既有團隊,著手管理容器化環境。隨著企業尋求發揮旗下基礎架構 (或雲端) 的強大威力,以支援沉重的應用程式和網路工作負載,虛擬機勢必將推出新的使用情境。
相關解決方案與產品
企業立即可用的 Kubernetes 執行階段
日誌記錄管理和分析
vSphere with Tanzu
使用現有的 IT 基礎架構執行 Kubernetes 工作負載。
讓現有應用程式進化
更新現有的應用程式,而無需進行昂貴的重構。