共用方式為


實作 Windows 容器的資源控制

適用於:Windows Server 2025、Windows Server 2022、Windows Server 2019

有數個資源控件可以在每個容器和每個資源的基礎上實作。 根據預設,容器執行受限於一般 Windows 資源管理,這一般是以公平共用為基礎,但雖然這些控件的設定可讓開發人員或系統管理員限制或影響資源使用量。 可控制的資源包括:CPU/處理器、記憶體/RAM、磁碟/記憶體和網路/輸送量。

Windows 容器會利用 作業物件 來分組和追蹤與每個容器相關聯的進程。 資源控件會在與容器相關聯的父作業對象上實作。

Hyper-V 隔離的情況下, 資源控制會自動同時套用到虛擬機器以及虛擬機器內運行之容器的作業物件。這確保即使容器中運行的進程略過或逃脫了作業物件的控制,虛擬機器仍能確保它無法超出已定義的資源控制範圍。

資源

本節針對每個資源,提供 Docker 命令行介面之間的對應,例如如何使用資源控制(可能由協調器或其他工具設定)對應至對應的 Windows 主機計算服務 (HCS) API,以及一般 Windows 實作資源控制的方式(請注意,此描述為高階,而且基礎實作可能會變更)。

記憶

資源 位置
Docker 介面 --記憶
HCS 介面 MemoryMaximumInMB
共用核心 JOB_OBJECT_LIMIT_JOB_MEMORY限制度工作記憶體
Hyper-V 隔離 虛擬機記憶體

注意

針對 Windows Server 2016 中的 Hyper-V 隔離,使用記憶體上限時,您會看到容器一開始配置記憶體上限數量,然後開始將它傳回容器主機。 更新版本的 Windows Server(1709 或更新版本)已將此程序優化。

CPU (計數)

資源 位置
Docker 介面 --cpus
HCS 介面 ProcessorCount
共用核心 使用 JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP* 模擬
Hyper-V 隔離 公開的虛擬處理器數目

CPU (百分比)

資源 位置
Docker 介面 --cpu-percent
HCS 介面 ProcessorMaximum
共用核心 設置 CPU 佔用率硬上限的工作對象
Hyper-V 隔離 Hypervisor 對虛擬處理器的限制

CPU(共用)

資源 位置
Docker 介面 --cpu-shares
HCS 介面 處理器重量
共用核心 JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED (基於權重的 CPU 配額控制)
Hyper-V 隔離 Hypervisor 虛擬處理器權數

記憶體(影像)

資源 位置
Docker 介面 --io-maxbandwidth/--io-maxiops
HCS 介面 StorageIOPSMaximum 和 StorageBandwidthMaximum
共用核心 JOBOBJECT_IO_RATE_CONTROL_INFORMATION
Hyper-V 隔離 JOBOBJECT_IO_RATE_CONTROL_INFORMATION

記憶體(磁碟區)

資源 位置
Docker 介面 --storage-opt size=
HCS 介面 StorageSandboxSize
共用核心 JOBOBJECT_IO_RATE_CONTROL_INFORMATION
Hyper-V 隔離 JOBOBJECT_IO_RATE_CONTROL_INFORMATION

其他附註或詳細數據

記憶體需求

Windows 容器會在每個容器中執行一些系統進程,通常是提供個別容器功能,例如使用者管理、網路功能等等... 雖然這些進程所需的大部分記憶體會在容器之間共用,但記憶體上限必須足夠高,才能允許它們。 在 系統需求文件中,針對每個基底映像類型以及有或沒有 Hyper-V 隔離的情況,提供數據表

CPU 共享(無 Hyper-V 隔離)

使用 CPU 共用基礎實作時(不使用 Hyper-V 隔離時)會設定 JOBOBJECT_CPU_RATE_CONTROL_INFORMATION,特別是將控制旗標設定為JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED並提供適當的權數。 作業物件的有效權數範圍是 1 – 9,預設值為 5,其精確度低於主機計算服務值 1 到 10000。 例如,7500的權重會產生7的結果,或2500的權重會產生2的結果。