:quality(80)/images.vogel.de/vogelonline/bdb/1953100/1953154/original.jpg)
Sichere und effiziente Server-Workloads Microservices und Co. mithilfe von Containern in Windows Server 2016
Mit der „Docker“-Container-Technologie in „Windows Server 2016“ bietet Microsoft, zusammen mit der neuen „Nano“-Server-Installation, eine effiziente Möglichkeit Server-Workloads effizient und sicher zur Verfügung zu stellen. Thomas Joos verrät, wie.
Anbieter zum Thema

Neben Nano-Servern gehören „Windows Server Container“, als Docker-Implementation, zu den wichtigsten Neuerungen in Windows Server 2016. Windows Server Container können auch auf Nano-Servern laufen und Nano-Server wiederum als Cluster, so dass auch Container hochverfügbar betrieben werden können - auch in virtuellen Umgebungen und auch mit virtuellen Clustern. Die Windows Server Container sowie deren Erweiterung „Hyper-V-Container“ basieren auf der Plattform Docker.
Das Betriebssystem in Docker-Containern und die notwendigen Ressourcen, sind auf dem Container-Host zusammengefasst. Startet ein Container, muss er nicht das ganze Betriebssystem booten, Bibliotheken laden und Ressourcen für das eigene Betriebssystem zur Verfügung stellen. Container nutzen Teile des Betriebssystems auf dem Container-Host.
Server-Dienste mit Containern auf Nano-Servern betreiben
Windows Server Container ermöglichen den Betrieb von Cloud-Anwendungen oder Web-Diensten in einer sicheren und einfach zu erstellenden Umgebung. Alles, was Unternehmen benötigen, ist ein Container-Host auf Basis von Windows Server 2016. Dabei kann es sich um einen physischen Server handeln, eine VM oder einen virtuellen Computer in „Microsoft Azure“. Beim Container-Host kann es sich um eine herkömmliche Installation von Windows Server 2016 handeln, aber auch um einen Core-Server sowie einen Nano-Server.
Die Verwaltung findet vor allem über die Powershell oder Befehlszeile statt. Auch die Container werden mit der Befehlszeile oder der Powershell verwaltet. Wollen Unternehmen auf dem Nano-Server auch Hyper-V-Container nutzen, müssen sie in diesem Fall die eingebettete Virtualisierung aktivieren. Diese Funktion ist neu in Windows Server 2016 und ermöglicht den Betrieb von Hyper-V innerhalb einer VM.
Installieren von Docker auf Nano-Servern
Auch auf Nano-Servern muss Docker installiert werden, um Windows Server Container zu nutzen. Dazu wird nach der Installation der neusten Updates mit einer Remote-Powershell-Sitzung Docker auf dem Server installiert. Dazu werden folgenden Befehle genutzt:
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Install-Package -Name docker -ProviderName DockerMsftProvider
Nach der Installation muss der Server neu gestartet werden. Um ein Container-Image auf Nano-Servern zu installieren wird folgender Befehl verwendet:
docker pull microsoft/nanoserver
Sollen auch Hyper-V-Container verwendet werden, muss Hyper-V auf dem Nano-Server installiert sein. Anschließend kann auch das Container-Image für Core-Server auf den Nano-Server heruntergeladen werden:
docker pull microsoft/windowsservercore
Das Core-Image für Container auf Basis von Windows Server 2016 ist auf Nano-Servern nur für Hyper-V-Container verfügbar. Mit dem Befehl
Install-Module posh-docker
wird noch die Vervollständigungs-Automatik für den Docker-Client auf einem Container-Host installiert. Nach der Installation kann mit der Tabulator-Taste durch die Befehle und Optionen des Docker-Clients durchgeschaltet werden. In der Powershell wird dazu das Modul mit Import-Module posh-docker importiert.
Container für die schnelle Bereitstellung von Server-Diensten nutze
Docker ermöglicht auch die lokale Verwaltung der Server-Rollen. Erstellen Administratoren zum Beispiel mit dem folgenden Befehl einen neuen Container und wechseln durch die Option -it gleich in die Befehlszeile, können sie innerhalb des Containers die Powershell starten und Installationen vornehmen:
docker run -it --name winiis -p 80:80 microsoft/windowsservercore
Sobald sich die Befehlszeile des Containers öffnet, kann mit dem Befehl „powershell“ auf dem Container eine lokale Powershell-Sitzung geöffnet werden. Anschließend lässt sich beispielsweise überprüfen, ob der IIS auf dem Container installiert ist. Hier wird der gleiche Befehl verwendet, wie bei herkömmlichen Servern mit Windows Server 2016:
Get-WindowsFeature web-server
Um den IIS zu installieren, wird wiederum der folgende Befehl verwendet:
Install-windowsfeature web-server
Darüber hinaus lassen sich auch eigene Images erstellen und bearbeiten, zum Beispiel auf Basis bestehender Container, die wiederum mit docker ps -a angezeigt werden:
docker commit <ID> <Ordner>/meincontainerimage
Beispiel:
docker commit 662f25d6d835 windowsiis/joosimageiis
Docker-Files für eigene Images erstellen
Auf Basis eines Images lassen sich weitere Container erstellen. Der Vorgang lässt sich auch automatisieren, in dem „Docker-Fles“ verwendet werden. Dabei handelt es sich um eine Anweisungsdatei für die Erstellung von neuen Containern.
In der Datei kann zum Beispiel festgelegt werden, dass ein neues Image erstellt werden soll, welches den „IIS“ als Basis nutzt. Auch die Konfiguration dazu lässt sich im Docker-File festlegen.
Generell wird in Docker-Files festgelegt, auf welcher Basis der neue Container erstellt werden soll. Außerdem steuert das Docker-File, was im neuen Container-Image für Aufgaben vorgenommen werden sollen. So kann zum Beispiel automatisch der IIS auf dem Container gestartet werden:
RUN dism.exe /online /enable-feature /all /featurename:iis-webserver /NoRestart
Über ein Docker-File lassen sich auch Powershell-Skripte in ein Container-Image kopieren und ausführen. Für das Hochladen von Container-Images wird der Befehl docker push verwendet:
docker push <Benutzername>/iis-dockerfile
Nach dem Upload kann mit docker pull das Image auf Container-Hosts heruntergeladen werden. Wollen Administratoren das Image nicht mehr verwenden, können sie es löschen:
docker rmi <Benutzername>/iis-dockerfile
Hyper-V-Container
Windows Server Container teilen sich wichtige Bereiche des Betriebssystems mit dem Host und anderen Containern. Das erhöht zwar die Effizienz der Container, im Vergleich zu virtuellen Servern, bietet aber auch mögliche Angriffsflächen. Grundsätzlich ist es möglich, dass ein Container andere Docker-Container auf dem Host beeinträchtigt oder angegriffen wird.
Der Nachteil von Hyper-V-Containern ist eine etwas schlechtere Leistung im Vergleich zu Windows Server Container. Der Vorteil liegt in der besseren Isolierung der Container.
(ID:44668029)