將容器升級至新版本的 Windows 作業系統
適用于:Windows Server 2022、Windows Server 2019、Windows Server 2016
本主題描述如何將 Windows 容器升級至新的 Windows 或 Windows Server 作業系統版本。 升級容器有兩個步驟:
- 將容器主機升級至新的作業系統版本。
- 使用新的作業系統版本建立新的容器實例。
注意
如果您只需要 更新 (或修補) 您目前的 Windows 基底 OS 容器映射,請參閱 更新您的容器 ,以提取容器的最新修補程式映射。
升級容器主機
若要將容器主機升級至較新的 Windows 或 Windows Server 版本,您可以執行就地升級或全新安裝。 由於容器主機和 Windows 容器共用單一核心,因此您應該確定容器的基底映射 OS 版本 符合主機的基底映射 OS 版本。 不過,您仍然可以有較新版本的容器主機,且具有 具有 Hyper-V 隔離的較舊基底映射。 在 Windows Server 2022 中,您可以使用預覽) 中的進程隔離 (來實作此案例。
使用新的 OS 版本建立新的容器實例
若要建立新的容器實例,您需要:
- 提取容器基底映射
- 編輯 Dockerfile 以指向新的基底映射
- 建置並執行新的應用程式映射
- 標記映射並將映射推送至您的登錄
提取容器基底映射
在容器主機上提取新的 Windows OS 版本之後,請遵循下列步驟來升級基底映射:
選取您要升級至的 容器基底映射 。
以系統管理員身分開啟 PowerShell 會話,並根據您選擇的作業系統版本執行 docker pull 命令來提取映射:
PS C:\> docker pull mcr.microsoft.com/windows/servercore:ltsc2022
此範例會提取 Server Core 版本 20H2 基底映射。
映射下載完成時,您可以執行 docker images 命令來確認已提取新的映射,以傳回提取映射的清單:
docker images
編輯 Dockerfile 以指向新的基底映射
接下來,您想要使用您提取的新基底映射來建立和啟動新的容器實例。 若要自動執行此程式,請編輯 Dockerfile 將其重新導向至新的映射。
注意
如果您想要升級目前正在執行之任何容器的映射,您必須使用 docker stop 停止容器,然後執行 docker rm 來移除容器。
在文字編輯器中開啟 Dockerfile 並進行更新。 在下列範例中,Dockerfile 會使用 IIS 應用程式更新為 Server Core 20H2。
FROM mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022 AS build-env
WORKDIR /app
COPY *.csproj ./
RUN PowerShell Install-WindowsFeature NET-Framework-45-ASPNET
FROM mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["ServiceMonitor.exe", "w3svc"]
建置並執行新的應用程式映射
更新 Dockerfile 之後,您需要建置並執行應用程式映射。
使用 docker build 建置映射,如下所示:
docker build -t iss .
若要執行新建置的容器,請執行 docker run 命令:
docker run -d -p 8080:80 --name iss-app iss
標記映射並將映射推送至您的登錄
若要允許其他主機重複使用新的映射,您應該標記容器映射,然後將容器映射推送至登錄。
使用 docker 標籤 來標記映射,如下所示:
docker tag mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022 <login-server>/iss
使用 docker push 將映射推送至容器登錄,如下所示:
docker push <login-server> iss
使用協調器升級容器
您也可以使用協調器來重新部署 Windows 容器,例如 Azure Stack HCI 上的 Azure Kubernetes Service 和 AKS。 協調器提供了強大的自動化功能而可大規模執行此作業。 如需詳細資訊,請參閱教學課程:在 azureStack HCI 上更新Azure Kubernetes Service中的應用程式Azure Kubernetes Service或教學課程:更新應用程式。