Vorbereiten eines Windows Server 2019-Hosts für die Containerbereitstellung
Hinweis
Für die Zwecke dieses Microsoft Learn-Moduls werden alle Beispiele mit der Docker CLI ausgeführt. Diese Befehle sollten unter Windows 10 und 11 mit Docker Desktop sowie für Windows Server mit Moby oder MCR funktionieren. Umgebungen mit Containern verfügen über andere CLI-Optionen, und die Befehle unterscheiden sich.
Der Windows Server-Administrator von Contoso muss wissen, was Containerbasisimages sind, wie diese beschafft werden können, wie ermittelt werden kann, welche Containerbasisimages verfügbar und geeignet sind, und wie Basisimages lokal abgerufen werden. So kann der Administrator alle erforderlichen Container erstellen und ausführen.
Herunterladen von Containerbasisimages
Nachdem die Containerruntime Ihrer Wahl installiert wurde, besteht der nächste Schritt darin, sich ein Basisimage zu verschaffen, das zum Bereitstellen einer grundlegenden Ebene von Betriebssystemdiensten für den Container verwendet wird. Anschließend wird ein Container erstellt und ausgeführt, der auf dem Basisimage basiert.
Ein Containerbasisimage umfasst:
Die Benutzermodus-Betriebssystemdateien, die zur Unterstützung der bereitgestellten Anwendung benötigt werden.
Alle Laufzeitdateien oder Abhängigkeiten, die für die Anwendung erforderlich sind.
Alle anderen sonstigen erforderlichen Konfigurationsdateien, damit die App bereitgestellt und ordnungsgemäß ausgeführt werden kann.
Microsoft stellt die Basisimages für das Betriebssystem in der folgenden Tabelle als Ausgangspunkt zum Erstellen eigener Containerimages bereit.
Name des Basisimages | Details |
---|---|
Server Core | Ein Image, das einen Teil der Windows Server-APIs enthält, z. B. das vollständige .NET Framework. Es umfasst auch die meisten Serverrollen. Dieses Image eignet sich ideal für Szenarios, in denen eine vorhandene Anwendung „containerisiert“ wird. |
Nano Server | Das kleinste Windows Server-Image mit Unterstützung für die .NET-APIs und bestimmte Serverrollen Für dieses Image muss die Anwendung für Nano Server geschrieben werden und eignet sich ideal für neue Anwendungen, die auf Windows basieren. |
Windows | Enthält alle Windows-APIs und -Systemdienste, jedoch keine Serverrollen Dieses Image wurde ab Windows Server 2022 durch das Serverimage ersetzt. |
Server | Ähnlich wie das Windows-Image enthält dieses Basisimage die vollständige Palette an Windows Server-APIs und -Systemdiensten. Zwar wird das Containerimage dadurch größer, jedoch ist die Anwendungskompatibilität ebenso höher. Dieses Image eignet sich ideal für Szenarios, in denen eine vorhandene Anwendung containerisiert wird, das Server Core-Image stellt jedoch nicht die erforderlichen Abhängigkeiten für die Anwendung bereit. |
Hinweis
Die Version des Windows-Hostbetriebssystems muss mit der Betriebssystemversion des Containers übereinstimmen. Zum Ausführen eines Containers, der auf einem neueren Windows-Build basiert, müssen Sie sicherstellen, dass auf dem Host eine entsprechende Betriebssystemversion installiert ist.
Wenn Ihr Hostserver eine neuere Betriebssystemversion enthält, können Sie den Hyper-V-Isolationsmodus verwenden, um eine ältere Version von Windows-Containern auszuführen.
Weitere Informationen zur Kompatibilität von Host- und Containerimages finden Sie unter Kompatibilität der Windows-Containerversion.
Sie können Basisimages über Microsoft Container Registry suchen und herunterladen. Verwenden Sie den Befehl „docker pull“, um ein bestimmtes Basisimage herunterzuladen.
Wichtig
Betriebssystembasisimages stellen die Windows Sever-Betriebssystemkomponenten und die zugehörigen Serverrollen bereit. Microsoft stellt auch spezifische Images für verschiedene bereits installierte Frameworks wie IIS, .NET Framework und .NET bereit.
Geben Sie im Befehl „docker pull“ die Version an, die mit der Version des Hostcomputers übereinstimmt. Verwenden Sie beispielsweise den folgenden Befehl, wenn Sie ein Nano Server-Image abrufen möchten, das auf Windows Server 2022 basiert:
docker pull mcr.microsoft.com/windows/nanoserver:ltsc2022
Verwenden Sie den folgenden Befehl, wenn Sie ein Server Core-Image von Windows Server 2019 abrufen möchten:
docker pull mcr.microsoft.com/windows/servercore:ltsc2019
Nachdem Sie die für Ihre Container benötigten Basisimages heruntergeladen haben, können Sie die lokal verfügbaren Images überprüfen und die Metadateninformationen anzeigen, indem Sie den folgenden Befehl eingeben:
docker images
Ausführen eines Windows-Containers
In großen Produktionsumgebungen interagieren Sie wahrscheinlich mit Containern über einen Containerorchestrator, z. B. Kubernetes oder Docker Swarm. In kleineren Dev/Test-Umgebungen können Sie Container unter Windows Server über die CLI erstellen, entfernen und verwalten.
Sie können auch Docker Hub oder Microsoft Container Registry browsen, um auf vorgefertigte Images zuzugreifen und diese zu pullen. Es gibt zwei Hauptalternativen zum Erstellen eines Containerimages zum Hosten Ihrer Anwendung:
Erstellen eines Containerimages mithilfe von Entwicklertools. Wenn die Anwendung von einem Entwickler bzw. einer Entwicklerin geschrieben wird, kann sie direkt über die Entwickler-IDE wie Visual Studio gepackt werden.
Erstellen eines Containerimages mit einem Dockerfile. Ein Dockerfile ist ein Textdokument, das alle Befehle enthält, die ein*e Benutzer*in über die Befehlszeile aufrufen kann, um ein Image zusammenzustellen. Tools wie Visual Studio erstellen das Dockerfile nativ für eine neue Anwendung, aber Sie haben die Möglichkeit, Ihren eigenen Dockerfile manuell zu erstellen.
Hinweis
Es gibt eine zusätzliche Option zum Erstellen von Containerimages basierend auf einem ausgeführten Container. Dies ähnelt dem Erstellen eines goldenen Images auf einer laufenden VM. Diese Methode wird nicht empfohlen. Weitere Informationen finden Sie im nächsten Abschnitt.
Automatisieren der Erstellung von Containerimages mithilfe von Dockerfile unter Windows
Die Docker Desktop-Engine und MCR umfassen Tools zum Automatisieren der Erstellung von Containerimages. Obwohl Sie Containerimages manuell erstellen können, bietet die automatisierte Imageerstellung zahlreiche Vorteile, z. B.:
Möglichkeit zum Speichern von Containerimages als Code.
Schnelle und präzise Neuerstellung von Containerimages zu Wartungs- und Upgradezwecken.
Fortlaufende Integration von Containerimages in den Entwicklungszyklus.
Hinweis
Moby und Container enthalten keine native Imagebuildlösung. Alternativ können Sie einen Containerimagebuilddienst verwenden, z. B. Azure Container Registry Tasks (ACR).
Die Docker-Komponenten, die diese Automatisierung steuern, sind die Dockerfile-Textdatei und der „docker build“-Befehl:
Die Dockerfile-Textdatei enthält die erforderlichen Anweisungen zum Erstellen eines neuen Containerimages. Diese Anweisungen beinhalten die Angabe eines vorhandenen Images, das als Basis verwendet wird, Befehle, die während der Imageerstellung ausgeführt werden, und einen Befehl, der bei der Bereitstellung neuer Instanzen des Containerimages ausgeführt wird.
Der „docker build“-Befehl nutzt eine Dockerfile-Datei und löst dann den Imageerstellungsprozess aus.
Verwalten von Containern mithilfe der CLI
Verwenden Sie die folgenden Befehle, um Ihre Container und Containerimages zu erstellen und zu verwalten:
- Der „docker images“-Befehl listet die verfügbaren Images auf dem Containerhost auf. Ein Grund hierfür ist die Verwendung vorhandener Containerimages als Basis für neue Container:
docker images
- Der „docker run“-Befehl erstellt einen Container aus einem Containerimage. Der folgende Befehl erstellt beispielsweise einen Container, der auf dem Windows Server Core-Containerimage basiert. Geben Sie keinen Isolationsmodus im Befehl an, damit Docker den Standardisolationsmodus verwendet, d. h. die Prozessisolation. Der Parameter --name wird verwendet, um einen Namen auf den Container festzulegen. Der Parameter -it wird verwendet, um eine interaktive Sitzung mit dem Container zu starten (im Gegensatz zu -d für eine getrennte Ausführung), und die PowerShell-Anweisung öffnet eine PowerShell-Sitzung:
docker run --name IIS -it mcr.microsoft.com/windows/servercore:ltsc2022 powershell
- Der Befehl „docker commit“ übernimmt die Änderungen, die Sie an einem Container vorgenommen haben, in ein neues Containerimage. Dabei werden keine Daten übernommen, die in Volumes enthalten sind, die im Container bereitgestellt werden. Standardmäßig wird der Container angehalten, während das neue Containerimage erstellt wird: (Beachten Sie, dass diese Option nicht als Best Practice zum Erstellen neuer Containerimages empfohlen wird).
docker commit
- Der Befehl „docker stop“ hält den laufenden Container an.
docker stop <container name or ID>
- Der Befehl „docker rm“ entfernt einen oder mehrere Container:
docker rm <container name or ID>
Demo
Im folgenden Video erhalten Sie Informationen zu den folgenden Aufgaben:
Installieren Sie Docker CE/Moby unter Windows Server.
Rufen Sie ein Containerimage auf, und führen Sie einen neuen Container interaktiv aus.
Stellen Sie eine IIS-Containerinstanz bereit, und überprüfen Sie die Webseite im Browser.
Dieser Vorgang umfasst die folgenden Hauptschritte:
Installieren Sie Docker CE/Moby unter Windows Server.
Herunterladen eines Windows Server Core-Images, das Internetinformationsdienste (IIS) enthält. Da die Containerbasisimage-Version mit der Version des Hosts übereinstimmen muss, wird der Container iis:windowsservercore-ltsc2022 verwendet.
Ausführen des folgenden Docker-Befehls mit den angegebenen Parametern:
Ausführen des heruntergeladenen Containers als Hintergrunddienst durch Verwendung des Parameters -d.
Konfigurieren des Netzwerks, sodass Port 80 des Containerhosts dem Port 80 des Containers zugeordnet wird.
Docker run -d -p 80:80 mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022
- Abrufen der Container-ID mit dem folgenden Befehl:
docker ps
- Beenden des Containers mit dem folgenden Befehl:
docker stop <container ID>
Kurze Wiederholung