Upgraden von Containern auf eine neue Version des Windows-Betriebssystems
Gilt für: Windows Server 2022, Windows Server 2019, Windows Server 2016
In diesem Thema wird beschrieben, wie Sie Windows-Container auf eine neue Windows- oder Windows Server-Betriebssystemversion upgraden. Ein Upgrade von Containern besteht aus zwei Schritten:
- Upgrade des Containerhosts auf die neue Betriebssystemversion.
- Erstellen neuer Containerinstanzen unter Verwendung der neuen Betriebssystemversion.
Hinweis
Wenn Sie lediglich Ihr aktuelles Containerbasisimage des Windows-Betriebssystems aktualisieren (oder patchen) müssen, erfahren Sie unter Aktualisieren Ihrer Container, wie Sie das neueste Patchimage für Ihre Container pullen können.
Upgrade des Containerhosts
Um den Containerhost auf eine neuere Windows- oder Windows Server-Version upzugraden, können Sie entweder ein direktes Upgrade oder eine Neuinstallation durchführen. Da sich der Containerhost und die Windows-Container einen einzigen Kernel teilen, sollten Sie sicherstellen, dass die Betriebssystemversion des Basisimages des Containers mit der Version des Hosts übereinstimmt. Sie können jedoch weiterhin eine neuere Version des Containerhosts mit einem älteren Basisimage mit Hyper-V-Isolation verwenden. In Windows Server 2022 können Sie dieses Szenario mit Prozessisolation (in der Vorschauversion) implementieren.
Erstellen neuer Containerinstanzen mit der neuen Betriebssystemversion
Um die neuen Containerinstanzen zu erstellen, müssen Sie:
- Das Containerbasisimage pullen
- Die Dockerfile-Datei so bearbeiten, dass sie auf das neue Basisimage verweist
- Das neue App-Image erstellen und ausführen
- Das Image markieren und in Ihre Registrierung pushen
Das Containerbasisimage pullen
Nachdem Sie die neue Version des Windows-Betriebssystems auf den Containerhost gepullt haben, führen Sie die folgenden Schritte aus, um das Basisimage upzugraden:
Wählen Sie das Containerbasisimage aus, auf das Sie das Upgrade ausführen möchten.
Öffnen Sie eine PowerShell-Sitzung als Administrator, und führen Sie abhängig von der ausgewählten Betriebssystemversion den Befehl docker pull aus, um ein Image zu pullen:
PS C:\> docker pull mcr.microsoft.com/windows/servercore:ltsc2022
In diesem Beispiel wird das Basisimage der Server Core-Version 20H2 gepullt.
Wenn der Download des Images abgeschlossen ist, können Sie überprüfen, ob das neue Image gepullt wurde, indem Sie den Befehl docker images ausführen, um eine Liste der gepullten Images zurückzugeben:
docker images
Die Dockerfile-Datei so bearbeiten, dass sie auf das neue Basisimage verweist
Als Nächstes sollten Sie neue Containerinstanzen unter Verwendung des neuen Basisimages, das Sie gepullt haben, erstellen und starten. Um diesen Prozess zu automatisieren, bearbeiten Sie die Dockerfile-Datei, um sie an das neue Image umzuleiten.
Hinweis
Wenn Sie das Image für einen Container upgraden möchten, der gerade ausgeführt wird, müssen Sie die Container mit docker stop beenden und dann docker rm ausführen, um die Container zu entfernen.
Öffnen Sie das Dockerfile in einem Text-Editor, und nehmen Sie die Aktualisierungen vor. Im folgenden Beispiel wird das Dockerfile mithilfe der IIS-Anwendung auf Server Core 20H2 aktualisiert.
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"]
Das neue App-Image erstellen und ausführen
Nachdem das Dockerfile aktualisiert wurde, müssen Sie das App-Image erstellen und ausführen.
Verwenden Sie docker build, um Ihr Image wie unten gezeigt zu erstellen:
docker build -t iss .
Um den neu erstellten Container auszuführen, führen Sie den Befehl docker run aus:
docker run -d -p 8080:80 --name iss-app iss
Das Image markieren und in Ihre Registrierung pushen
Damit andere Hosts das neue Image wiederverwenden können, sollten Sie das Containerimage markieren und dann in Ihre Registrierung pushen.
Verwenden Sie docker tag, um das Image wie folgt zu markieren:
docker tag mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022 <login-server>/iss
Verwenden Sie docker push, um das Image wie folgt in die Containerregistrierung zu pushen:
docker push <login-server> iss
Upgrade von Containern mithilfe eines Orchestrators
Sie können Ihre Windows-Container auch mithilfe eines Orchestrators erneut bereitstellen, z. B. Azure Kubernetes Service und AKS in Azure Stack HCI. Der Orchestrator bietet leistungsstarke Automatisierung im richtigen Maßstab. Weitere Informationen finden Sie im Tutorial: Aktualisieren einer Anwendung in Azure Kubernetes Service oder im Tutorial: Aktualisieren einer Anwendung in Azure Kubernetes Service in Azure Stack HCI.