共用方式為


更新 Windows Server 容器

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

在每個月的 Windows Server 維護中,我們會定期發行更新的 Windows Server 基底 OS 容器映像。 透過這些更新,您可以自動建立已更新的容器映像,或藉由手動提取最新版本來更新這些映像。 Windows Server 容器沒有像 Windows Server 一樣的服務堆疊。 您無法像使用 Windows Server 一樣,在容器內取得更新。 因此,我們每個月都會使用更新來重建 Windows Server 基底 OS 容器映像,並發佈更新後的容器映像。

其他容器映像 (例如 .NET 或 IIS) 則會根據更新的基底 OS 容器映像來重建,並且每月發佈。

如何取得 Windows Server 容器更新

我們會配合 Windows 提供服務的步調來更新 Windows Server 基底 OS 容器映像。 已更新的容器映像會在每個月的第二個星期二發佈,我們有時會將其稱為 "B" 版本,並以發行月份作為首碼編號。 例如,我們稱之為 2 月更新 「2B」 和 3 月更新 「3B」。。這個每月更新事件是唯一包含新安全性修正的一般版本。

裝載這些容器的伺服器 (稱為容器主機或「主機」) 可以在 "B" 版本以外的其他更新事件中進行維護。 若要深入了解 Windows 更新服務的步調,請參閱 Windows 更新服務步調的部落格文章。

新的 Windows Server 基底 OS 容器映像會在每個月第二個星期二的上午 10:00 (PST) 過後不久,於 Microsoft Container Registry (MCR) 上線,而精選標籤則會以最新的 B 版本為目標。 這些範例包含:

  • ltsc2019 (LTSC): docker pull mcr.microsoft.com/windows/servercore:ltsc2019
  • 1909 (SAC): docker pull mcr.microsoft.com/windows/servercore:1909

如果您比較熟悉 Docker Hub 而不是 MCR,這篇部落格文章會提供您更詳細的說明。

每個版本的個別容器映像也會搭配兩個額外標籤來發佈,這兩個標籤是以特定容器映像修訂為目標的修訂編號和知識庫文章編號。 例如:

  • docker pull mcr.microsoft.com/windows/servercore:10.0.17763.1040
  • docker pull mcr.microsoft.com/windows/servercore:1809-KB4546852

這些範例都會提取具有 2 月 18 日安全性版本更新的 Windows Server 2019 Server Core 容器映像。

如需 Windows Server Base OS 容器映射、版本及其各自標籤的完整清單,請參閱 Docker Hub 上的下列資源:

Microsoft 每月維護並在 Azure Marketplace 上發行的 Windows Server 映像也會隨附預先安裝的基底 OS 容器映像。 您可以在我們的 Windows Server Azure Marketplace 定價頁面上找到更多資訊。 我們通常會在發行 "B" 版本後的五個工作天內更新這些映像。

如需 Windows Server 映像和版本的完整清單,請參閱 Azure Marketplace 上的 Windows Server 版本更新記錄

主機和容器版本相容性

Windows 容器有兩種類型的隔離模式:進程隔離和 Hyper-V 隔離。 Hyper-V 隔離在主機和容器版本相容性方面有更多彈性。 若要深入了解,請參閱版本相容性隔離模式。 除非另有說明,否則本節將著重於程序隔離的容器。

當您使用每月更新來更新容器主機或容器映像時,只要主機和容器映像都受到支援 (Windows Server 版本 1809 或更新版本),則主機和容器映像修訂無需相符,也能讓容器正常啟動和執行。

不過,在搭配 2020 年 2 月 11 日的安全性更新版本 (也稱為 "2B") 或之後的每月安全性更新版本使用 Windows Server 容器時,您可能會遇到問題。 如需詳細資訊,請參閱此 Microsoft 支援服務文章。 這些問題是由安全性變更所造成,需要在使用者模式和核心模式之間的介面上進行變更,才能確保應用程式的安全性。 這些問題只會發生在程序隔離的容器上,因為程序隔離的容器會與容器主機共用核心模式。 這表示沒有更新使用者模式元件的容器映像不會受到保護,而且與新的安全核心介面不相容。

我們在 2020 年 2 月 18 日發行修正程式。 這個新版本已建立「新基準」。這個新的基準會遵循下列規則:

  • 所有 2B 之前的主機和容器組合都能正常執行。
  • 所有 2B 之後的主機和容器組合都能正常執行。
  • 與新基準不同面向的所有主機和容器組合將無法正常執行。 例如,3B 主機和 1B 容器將無法執行。

讓我們使用 2020 年 3 月的每月安全性更新版本做為範例,示範這些新的相容性規則如何發揮作用。 在下表中,2020 年 3 月的安全性更新版本稱為 "3B",2020 年 2 月的更新為 "2B",而 2020 年 1 月的更新稱為 "1B"。

Host 容器 相容性
3B 3B Yes
3B 2B Yes
3B 1B 或更早版本 No
2B 3B Yes
2B 2B Yes
2B 1B 或更早版本 No
1B 或更早版本 3B No
1B 或更早版本 2B No
1B 或更早版本 1B 或更早版本 Yes

下表列出主要 OS 版本 (從 Windows Server 2016 到最新的 Windows Server 版本 1909) 上,具有 1B、2B 和 3B 每月安全性更新版本的基底 OS 容器映像版本號碼。

Windows Server 版本 (浮動標記) 1/14/20 發行的更新版本 (1B) 2/18/20 發行的更新版本 (2B) 3/10/20 發行的更新版本 (3B)
Windows Server 2016 (ltsc2016) 10.0.14393.3443 (KB4534271) 10.0.14393.3506 (KB4546850) 10.0.14393.3568 (KB4551573)
Windows Server 版本 1803 (1803) 10.0.17134.1246 (KB4534293) 10.0.17134.1305 (KB4546851) 此版本已終止支援。 如需詳細資訊,請參閱基底映像服務生命週期
Windows Server 版本 1809 (1809) 10.0.17763.973 (KB4534273) 10.0.17763.1040 (KB4546852) 10.0.17763.1098 (KB4538461)
Windows Server 2019 (ltsc2019) 10.0.17763.973 (KB4534273) 10.0.17763.1040 (KB4546852) 10.0.17763.1098 (KB4538461)
Windows Server 版本 1903 (1903) 10.0.18362.592 (KB4528760) 10.0.18362.658 (KB4546853) 10.0.18362.719 (KB4540673)
Windows Server 版本 1909 (1909) 10.0.18363.592 (KB4528760) 10.0.18363.658 (KB4546853) 10.0.18363.719 (KB4540673)

針對主機和容器映像不符的問題進行疑難排解

開始之前,請務必先熟悉版本相容性中的資訊。 此資訊可協助您判斷問題是否由修補程式不相符所造成。 當您確定不相符的修補程式是原因時,您可以遵循本節中的指示來對問題進行疑難排解。

查詢您的容器主機版本

如果您可以存取容器主機,您可以執行 ver 命令來取得其 OS 版本。 例如,如果您在執行 Windows Server 2019 (具有最新 2020 年 2 月安全性更新版本) 的系統上執行 ver,您會看到:

Microsoft Windows [Version 10.0.17763.1039]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\>ver

Microsoft Windows [Version 10.0.17763.1039]

注意

此範例中的修訂編號會顯示為 1039,而不是 1040,因為 2020 年 2 月的安全性更新版本沒有適用於 Windows Server 的頻外 2B 版本。 容器只有一個頻外 2B 版本,其修訂編號為 1040。

如果您沒有容器主機的直接存取權,請洽詢IT系統管理員。如果您在雲端上執行,請檢查雲端提供者的網站,以瞭解其執行中的容器主機 OS 版本。 例如,如果您使用 Azure Kubernetes Service (AKS),您可以在 AKS 版本資訊中找到主機 OS 版本。

查詢您的容器映像版本

請遵循這些指示來找出您容器執行的版本:

  1. 在 PowerShell 中執行下列 Cmdlet:

    docker images
    

    輸出應該看起來像這樣:

    REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
    mcr.microsoft.com/windows/servercore   ltsc2019            b456290f487c        4 weeks ago         4.84GB
    mcr.microsoft.com/windows              1809                58229ca44fa7        4 weeks ago         12GB
    mcr.microsoft.com/windows/nanoserver   1809                f519d4f3a868        4 weeks ago         251M
    
    
  2. 針對 docker inspect 無法運作之容器映像的映像標識碼執行 命令。 這會告訴您容器映像的目標版本。

    例如,假設我們 run docker inspect 針對 ltsc 2019 容器映像:

    docker inspect b456290f487c
    
        "Architecture": "amd64",
    
         "Os": "windows",
    
         "OsVersion": "10.0.17763.1039",
    
         "Size": 4841309825,
    
         "VirtualSize": 4841309825,
    

    在此範例中,容器 OS 版本會顯示為 10.0.17763.1039

    如果您已在執行容器,您也可以在容器本身內執行 ver 命令,以取得版本。 例如,如果 Windows Server 2019 具有最新的 2020 年 2 月安全性更新版本,則在其 Server Core 容器映像中執行 ver 時,將會顯示下列內容:

    Microsoft Windows [Version 10.0.17763.1040]
    (c) 2020 Microsoft Corporation. All rights reserved.
    
    C:\>ver
    
    Microsoft Windows [Version 10.0.17763.1040]