藉助容器和虛擬機器 (VM) 這兩種基礎技術,應用程式可在隔離環境中運作。雖然兩者都具備資源管理功能和可攜性等優點,但架構、資源使用情形和用途大相逕庭。要選擇合適的技術,就需要考量確切的應用程式需求和業務目標。下文將說明容器和 VM 的主要差異,協助您做出明智的決策。
容器是可攜式的輕量獨立可執行映像檔,內含軟體應用程式及其依附元件,可用於在不同環境 (例如開發、測試與實際工作環境) 中以一致的方式部署及執行應用程式。容器通常是透過 Kubernetes 等自動化調度管理平台從映像檔部署。這些平台可讓您大規模管理及部署容器。
與傳統的虛擬化方法相比,容器具備多種優勢。舉例來說,容器比 VM 更輕量,而且可攜性更高,可將單體分解為微服務。容器的管理和部署速度比 VM 快,因此在應用程式部署方面省錢又省時。
虛擬機器 (VM) 或訪客是作業系統執行個體,會使用管理程序共存於實體機器上。每個 VM 都有自己的作業系統、記憶體和其他資源,且這些資源與同一實體電腦上的其他 VM 隔離開來。如此一來,就能在同一個實體元件上執行多個作業系統,不會彼此干擾。
虛擬機器的建立及管理是使用管理程序軟體進行。管理程序是管理實體電腦資源並將其分配給虛擬機器的軟體。
虛擬機器透過管理程序存取實體機器的硬體。管理程序會建立抽象層,允許 VM 存取 CPU、記憶體和儲存空間。相較之下,容器代表內含執行檔以及執行所需依附元件的套件。
也就是說,每個容器與其他容器會共用實體機器的硬體和作業系統核心。
因此,虛擬機器通常比容器耗用更大量資源。不過,虛擬機器還會提供高層級的隔離,這對安全性和法規遵循而言相當重要。容器比虛擬機器更輕量且更具可攜性。因此相當適合需要快速輕鬆部署且必須最佳化運算能力的應用程式。
請參閱下方的比較圖表,進一步瞭解容器和虛擬機器的差異:
功能 | 容器 | 虛擬機器 |
虛擬化層級 | 作業系統層級 | 硬體層級 |
作業系統 | 共用主機 OS 核心 | 訪客 OS (完整的 OS 執行個體) |
大小 | 數 MB | 數 GB |
啟動時間 | 秒 | 分鐘 |
資源使用情況 | 較低 | 較高 |
隔離 | 程序層級 | 硬體層級 |
可攜性 | 具高度可攜性 | 較不易於攜帶 |
管理 | 通常會以容器自動化調度管理工具 (例如 Kubernetes) 管理 | 以管理程序 (例如 VMware、KVM) 或雲端管理平台管理 |
用途 | 微服務、網頁應用程式、CI/CD 管道、雲端原生應用程式 | 舊版應用程式、需要高度隔離的應用程式、作業系統需求多元 |
功能
容器
虛擬機器
虛擬化層級
作業系統層級
硬體層級
作業系統
共用主機 OS 核心
訪客 OS (完整的 OS 執行個體)
大小
數 MB
數 GB
啟動時間
秒
分鐘
資源使用情況
較低
較高
隔離
程序層級
硬體層級
可攜性
具高度可攜性
較不易於攜帶
管理
通常會以容器自動化調度管理工具 (例如 Kubernetes) 管理
以管理程序 (例如 VMware、KVM) 或雲端管理平台管理
用途
微服務、網頁應用程式、CI/CD 管道、雲端原生應用程式
舊版應用程式、需要高度隔離的應用程式、作業系統需求多元
如要瞭解容器和 VM 的差異,不妨先比較兩者的架構:
雖然容器和虛擬機器用途不同,但兩者並非互斥。事實上,這兩者經常搭配使用,用來打造強大且靈活的基礎架構。
相較於虛擬機器,容器占用的空間較小。這是因為容器共用主機作業系統的核心,而虛擬機器則各自擁有自己的核心。因此,容器可更快速啟動和停止,耗用的資源也較少。虛擬機器彼此獨立,能防止攻擊在客體機器之間擴散。
以下列舉幾種容器和虛擬機器的常見搭配用法:
在 VM 內執行容器,可享有額外的隔離層和安全防護。這種做法通常用於講求安全的環境,例如金融服務或醫療照護業。
在 VM 上部署 Kubernetes 叢集,有助於打造彈性且可擴充的基礎架構,輕鬆管理容器化應用程式,並同時享有兩項技術的優點。
在混合雲環境中同時使用容器和 VM,即可在地端部署環境和雲端執行應用程式,滿足實際業務需求。
虛擬機器是多種用途的熱門選擇,包括:
虛擬機器是可用於多種用途的強大工具。它們不僅能夠在同一台電腦上執行多個作業系統和應用程式,還可用於在安全環境中測試新軟體,因此是一種具備成本效益的方式。
要選擇容器或虛擬機器,取決於您的具體需求,請參考下方指南:
用途 | 建議 | 企業業務範例 |
微服務應用程式 | 容器 | 一間電子商務公司使用容器部署微服務平台,善用其獨立擴充的特性來加快開發週期。 |
翻新舊版應用程式 | 容器 | 一間金融機構將舊版應用程式容器化,然後遷移至雲端,成功提升可攜性並降低基礎架構成本。 |
持續整合/持續推送軟體更新 (CI/CD) | 容器 | 一家軟體公司使用容器建立一致且可重複使用的 CI/CD 管道,確保能在不同環境中部署可靠的應用程式。 |
高度重視安全性的應用程式 | 虛擬機器 | 醫療服務供應商使用虛擬機器隔離機密的病患資料,以遵守嚴格的法規要求。 |
執行不同作業系統 | 虛擬機器 | 軟體開發人員使用虛擬機器,同時在不同作業系統 (Windows、Linux、macOS) 上測試應用程式。 |
需要大量資源的工作負載 | 虛擬機器 | 一家媒體公司使用虛擬機器執行影片編碼和轉碼工作負載,充分善用專屬 CPU 和記憶體資源。 |
用途
建議
企業業務範例
微服務應用程式
容器
一間電子商務公司使用容器部署微服務平台,善用其獨立擴充的特性來加快開發週期。
翻新舊版應用程式
容器
一間金融機構將舊版應用程式容器化,然後遷移至雲端,成功提升可攜性並降低基礎架構成本。
持續整合/持續推送軟體更新 (CI/CD)
容器
一家軟體公司使用容器建立一致且可重複使用的 CI/CD 管道,確保能在不同環境中部署可靠的應用程式。
高度重視安全性的應用程式
虛擬機器
醫療服務供應商使用虛擬機器隔離機密的病患資料,以遵守嚴格的法規要求。
執行不同作業系統
虛擬機器
軟體開發人員使用虛擬機器,同時在不同作業系統 (Windows、Linux、macOS) 上測試應用程式。
需要大量資源的工作負載
虛擬機器
一家媒體公司使用虛擬機器執行影片編碼和轉碼工作負載,充分善用專屬 CPU 和記憶體資源。