容器與虛擬機
適用於:Windows Server 2025、Windows Server 2022、Windows Server 2019、Windows Server 2016
本主題討論容器和虛擬機(VM)之間的一些主要相似之處和差異,以及何時可能想要使用。 容器和 VM 各自都有其用途,事實上,許多容器部署都會使用 VM 作為主機操作系統,而不是直接在硬體上執行,尤其是在雲端中執行容器時。
如需容器的概觀,請參閱 Windows 和容器。
容器架構
容器是隔離且輕量的環境,用於在主機操作系統上執行應用程式。 容器建置在主機操作系統核心之上(這可視為操作系統的埋藏管道),並只包含以使用者模式執行的應用程式和一些輕量型操作系統 API 和服務,如下圖所示。
上執行的方式
虛擬機器架構
相較於容器,VM 會執行完整的操作系統,包括自己的核心,如下圖所示。
容器與虛擬機
下表顯示這些互補技術的一些相似性和差異。
特徵 | 虛擬機 | 容器 |
---|---|---|
隔離 | 提供與主機作業系統和其他 VM 的完整隔離。 在需要強健安全界限的情況下,例如在同一伺服器或叢集上托管來自競爭公司的應用程式,此方法非常有用。 | 通常提供與主機和其他容器的輕量型隔離,但不會提供與 VM 相同的強式安全性界限。 (您可以使用 Hyper-V 隔離模式來增加安全性, 以隔離輕量級虛擬機中的每個容器)。 |
操作系統 | 執行完整的操作系統,包括核心,因此需要更多系統資源(CPU、記憶體和記憶體)。 | 執行操作系統的使用者模式部分,可以針對您的應用程式量身打造,只包含所需的服務,並使用較少的系統資源。 |
來賓相容性 | 幾乎可以在虛擬機內執行任何作業系統。 | 在 與主機 相同的作業系統版本上執行 (Hyper-V 隔離可讓您在羽量型 VM 環境中執行舊版的相同操作系統)。 |
部署 | 使用 Windows Admin Center 或 Hyper-V Manager 部署個別 VM;使用 PowerShell 或 System Center Virtual Machine Manager 部署多個 VM。 | 透過命令行使用 Docker 部署個別容器;使用 Azure Kubernetes Service 等協調器來部署多個容器。 |
操作系統更新和升級 | 在每個 VM 上下載並安裝作業系統更新。 安裝新的操作系統版本需要升級,或通常只需要建立全新的 VM。 這很耗時,特別是如果您有大量的 VM。 | 更新或升級容器內的作業系統檔案相同:
|
永續性記憶體 | 針對單一 VM 使用虛擬硬碟 (VHD) 作為本機記憶體,或針對多部伺服器共用的記憶體使用 SMB 檔案共用。 | 若為單一節點使用本機儲存,選擇 Azure 磁碟;若需多個節點或伺服器共用儲存,則選擇使用 Azure 檔案服務(SMB 共用)。 |
負載平衡 | 虛擬機負載平衡會將執行中的 VM 移至故障轉移叢集中的其他伺服器。 | 容器本身不會移動;相反地,協調器可以自動啟動或停止叢集節點上的容器,以管理負載和可用性的變更。 |
容錯 | VM 可以故障轉移至叢集中的另一部伺服器,並在新的伺服器上重新啟動 VM 的作業系統。 | 如果叢集節點失敗,任何在叢集節點上執行的容器會由另一個叢集節點上的協調器快速重新建立。 |
聯網 | 使用虛擬網路適配器。 | 使用虛擬網路適配器的隔離檢視,提供較少的虛擬化–主機的防火牆會與容器共用,同時使用較少的資源。 如需詳細資訊,請參閱 Windows 容器網路。 |