Windows Server 2016 Technical Preview 3

Windows Server Container nutzen

03.09.2015 von Thomas Joos
Die wichtigste Neuerung der Technical Preview 3 des Windows Server 2016 sind die Server Container beziehungsweise die Unterstützung von Docker. Wir haben die Container in der Praxis ausprobiert.

Bei der neuen Vorabversion Windows Server 2016 TP3 hat Microsoft verschiedene neue Funktionen integriert. Die Neuerungen, die Bestandteil von Windows Server 2016 TP2 waren, sind auch noch in Windows Server 2016 TP3 dabei. Allerdings hat Microsoft in der aktuellen Version weitere neue Funktionen freigeschaltet, die bisher nicht integriert waren. Im Evaluations-Center des TechNet können interessierte Admins den Windows Server 2016 Technical Preview 3 herunterladen.

Die wichtigste Neuerung ist sicherlich die Integration von Docker. So haben Anwender in der neuen Version die Möglichkeit Container zu virtualisieren, in denen Anwendungen sozusagen ohne zu Grunde liegendes Betriebssystem virtualisiert werden können. Auf Basis der Container können Workloads aus der Cloud oder ganze Webserver betreiben werden. Für den Anwender ist der Zugriff transparent. Die Einrichtung ist generell einfach gelöst, auch wenn Microsoft hier noch weiter an den Verwaltungsmöglichkeiten arbeitet. So gibt die aktuelle Version der Server-Container nicht deren gesamte Möglichkeiten wieder, zeigt aber ganz gut wohin die Reise geht.

Was sind Windows Server Container?

Die Technologie der Server-Container wurde zusammen mit den Docker-Entwicklern in Windows Server 2016 TP3 integriert. Die Verwaltung erfolgt über die PowerShell, oder indem Sie die entsprechende Umgebung in Microsoft Azure integrieren und dann mit der Eingabeaufforderung verwalten. Der Verbindungsaufbau zum Container-Host erfolgt dagegen per RDP. Die Container-Technologie ist ein Server-Feature, welches Administratoren über den Server-Manager integrieren. Dieses ermöglicht erst das Erstellen der Server-Container. Ohne diese Installation beherrscht Windows Server 2016 TP3 kein Docker. Das heißt, diese Erweiterung ist optional, sie ersetzt keine Standardinstallationen.

Alternativ kann eine Core-Installation von Windows Server 2016 TP3 als Basis dienen. Diese ist auch Grundlage der Container, wenn sie über Microsoft Azure zur Verfügung gestellt werden. Ein erstellter Container wird auf Basis der Befehlszeile und der PowerShell verwaltet. Dabei stehen nahezu die gleichen Möglichkeiten zur Verfügung, wie bei der Verwendung herkömmlicher Core-Server mit Windows Server 2016. Container erhalten auch eine IP-Adresse, auf deren Basis die Verwaltung über das Netzwerk erfolgen kann. Die Technik befindet sich zwar schon in einem recht weit entwickelten Zustand, es ist aber zu erwarten, dass Microsoft in den nächsten Previews noch nachlegen wird.

Bildergalerie:
Windows Server 2016
In der PowerShell starten Sie die Erstellung eines neuen Container-Hosts.
Windows Server 2016
In der Weboberfläche von Microsoft Azure erstellen Administratoren auf Wunsch neue virtuelle Computer mit Server-Container auf Basis von Windows Server 2016 TP3.
Windows Server 2016
Microsoft stellt in Microsoft Azure das Image „Windows Server Container Preview“ zur Verfügung. Dieses basiert auf Windows Server 2016 TP3.
Windows Server 2016
Den virtuellen Server, den Sie in Microsoft Azure als Container-Host betreiben, können Sie in der Weboberfläche konfigurieren.
Windows Server 2016
In der Befehlszeile verwalten Sie die Docker-Container mit einem eigenen Befehl.
Windows Server 2016
Für die Verwaltung der Container-Technologie verwenden Sie die Befehlszeile und die PowerShell. Mit einfachen Befehlen wechseln Sie zwischen den beiden Shells.
Windows Server 2016
In der PowerShell können Sie Container in Windows Server 2016 verwalten.
Windows Server 2016
In der PowerShell erstellen Sie schnell und einfach neue Container und stellen diese auch gleich bereit.
Windows Server 2016
Container verwalten Sie am besten in der PowerShell.

Windows Server Container einrichten

Um Windows Server Container einzurichten, installieren Sie zunächst über den Server-Manager das Server-Feature Container. Danach laden Sie sich das PowerShell-Skript zum Erstellen eines neuen Container-Hosts auf Basis von Hyper-V herunter. Dieses steht als Skript-Beispiel in Github zur Verfügung. Sobald Sie das Skript auf dem Hyper-V-Host heruntergeladen und erstellt haben, starten Sie es, um die notwendige VHD für die VM herunterzuladen. Die Syntax dazu ist:

.\New-ContainerHost.ps1 -VmName <Name der neuen VM> -Password <Kennwort>

Durch den Befehl wird eine ZIP-Datei heruntergeladen. Diese wird zum Erstellen einer neuen VM verwendet, die als Container-Host genutzt wird. Innerhalb dieses Hosts werden wiederum verschiedene Container erstellt. Der Download der 6 GByte großen Datei kann einige Zeit dauern. Aktualisieren Sie das Explorer-Fenster über das Kontextmenü, sehen Sie das Anwachsen der Datei.

Container in Microsoft Azure einrichten

Um Container in Microsoft Azure einzurichten, ist auf der Weboberfläche zunächst eine neue VM auf Basis von Windows Server 2016 TP zu installieren. Dazu kann auch die kostenlose Testversion von Microsoft Azure verwendet werden.

Auf der Weboberfläche von Microsoft Azure ist dann auf Neu zu klicken. Danach ist Compute\Virtueller Computer\Aus Katalog auszuwählen.

In der Weboberfläche von Microsoft Azure erstellen Administratoren auf Wunsch neue virtuelle Computer mit Server-Container auf Basis von Windows Server 2016 TP3.
Foto: Thomas Joos

Hier wählt der Anwender das Image "Windows Server Container Preview" aus. Dabei handelt es sich um eine Core-Installation von Windows Server 2016 TP3 mit aktivierter Container-Technologie.

Im Assistenten zur Konfiguration des neuen Servers erfolgt die Vergabe des Namens und die Auswahl der Größe. Außerdem können hier Benutzernamen und Kennwort festgelegt werden. Danach wählt der User noch die Region aus, in welcher der Server bereitgestellt werden soll.

Den virtuellen Server, den Sie in Microsoft Azure als Container-Host betreiben, können Sie in der Weboberfläche konfigurieren.
Foto: Thomas Joos

Ist der Assistent durchgearbeitet, erstellt Microsoft Azure die VM. Der Vorgang kann einige Zeit dauern. Um Container zu verwalten, verwenden Admins die Befehlszeile oder die PowerShell. Dabei spielt es keine Rolle, ob der Container-Host auf Basis von Windows Server 2016 TP3 in Microsoft Azure bereitgestellt wird, oder mit einem lokalen Server gearbeitet wird.

Wenn der Container-Host in Microsoft Azure bereitgestellt ist, können Anwender über die Schaltfläche Verbinden eine RDP-Datei herunterladen, mit der Sie eine herkömmliche RDP-Sitzung aufbauen. Ist der Server über den Remotedesktop verbunden, können die Container in der VM genutzt werden. Auf diesem Weg werden auch lokal installierte Server verwaltet.

Erste Schritte mit Docker in Windows Server 2016 TP3

Die Docker-Container in Windows Server 2016 TP3 werden zunächst über die Befehlszeile mit dem Befehl docker verwaltet. Nach Eingabe des Befehls erhält der Nutzer bereits eine erste Hilfe für die Verwendung der Container in Windows Server 2016 TP3.

Ebenso kann die Container-Technologie aber auch in der PowerShell verwaltet werden. Mit dem Befehl "powershell" starten Administratoren im Eingabeaufforderungsfenster einer Core-Installation von Windows Server 2016 TP3 eine PowerShell-Sitzung. Wollen die Systemverantwortlichen zum Beispiel die aktuell verfügbaren Images für Container anzeigen, hilft das CMDlet Get-ContainerImage weiter. In der Befehlszeile kann wiederum der Befehl docker images genutzt werden, um die vorhandenen Docker-Container anzuzeigen.

Zum Start eines vorhandenen Containers dient der Befehl docker run. Als Optionen geben User den Namen des neuen Containers an sowie das Image das der Container als Basis verwenden soll. Die beiden Optionen -it und cmd legen fest, dass der Container mit der Befehlszeile verwaltet wird. Die Beispielsyntax sieht folgendermaßen aus:

docker run -it --name dockertest windowsservercore cmd

Sobald der Container erstellt wurde, kann er in der Befehlszeile mit der Eingabeaufforderung und der PowerShell verwaltet werden. Um sich eine Liste aller Container auf einem Container-Host anzuzeigen, steht der Befehl docker ps -a zur Verfügung.

Anwender können erstellte Container mit Änderungen, die sie durchgeführt haben, als neues Image speichern und dieses Image wiederum für neue Container verwenden. Auf diesem Weg erstellen due User also enorm schnell zahlreiche Container mit allen Einstellungen, die benötigt werden. Um ein Image zu erstellen, ist folgender Befehl zu verwenden:

docker commit dockertest meincontainerimage

Sobald das Image erstellt ist, kann es mit dem Befehl docker images anzeigt und es als Grundlage für einen neuen Container verwendet werden:

docker run -it --name dockertest2 meincontainerimage cmd

Um Container zu löschen, dient docker rm <Name des Containers>. Images wiederum löscht man mit: docker rmi <Name des Images>.

Container in der PowerShell erstellen

Neben der Möglichkeit mit dem Tool docker zu arbeiten, können Container auch mit der PowerShell verwaltet werden. Die PowerShell-CMDlets zum Verwalten von Container erhält man am schnellsten über den Befehl Get-Command -Module containers an. Um nach der Verbindung mit dem Container-Host die verfügbaren Images anzuzeigen, dient der Befehl Get-ContainerImage.

Wichtig bei der Erstellung neuer Container sind auch die virtuellen Switches. Diese zeigt Get-VMSwitch an. Container verbinden sich über die virtuellen Switch mit dem Netzwerk. Den Namen der virtuellen Switches müssen bei der Erstellung des Containers gleich mit angeben werden:

New-Container -Name "Container1" -ContainerImageName WindowsServerCore -SwitchName "Virtual Switch"

Eine Liste aller Container erhält der Admin auch über den Befehl Get-Container. Der Start eines Containers erfolgt über den Befehl Start-Container -Name "Container1".

In der PowerShell können Sie Container in Windows Server 2016 verwalten.
Foto: Thomas Joos

Die Verwaltung des Containers erfolgt anschließend in der PowerShell. Dies geschieht entweder mit Invoke-Command oder eine PowerShell-Sitzung wird direkt für den Container geöffnet. Zum Verbindungsaufbau ist die ContainerID erforderlich. Sie erhält man mit

get-container |fl ContainerID

Um mit Enter-PSSession eine Verbindung aufzubauen, ist folgende Befehlssyntax zu verwenden:

Enter-PSSession -ContainerId <ID> -RunAsAdministrator

In diesem Beispiel sieht der Befehl folgendermaßen aus:

Enter-PSSession -ContainerId b2f55c8c-28d7-4c0c-ab2b-9ee62c9ae6ea -RunAsAdministrator

Innerhalb der PowerShell-Sitzung stehen die verschiedenen CMDlets zur Verwaltung von Windows Server 2016 zur Verfügung, auch die Befehle zur Verwaltung in der Befehlszeile. Sobald der Verbindungsaufbau durchgeführt ist, steht die PowerShell zur Verwaltung des Containers zur Verfügung. Um zum Beispiel die IP-Adresse des Containers in Erfahrung zu bringen, verwenden Anwender den Befehl ipconfig. Mit dem Befehl exit wird die Container-Verwaltung verlassen.

In Containern können auch Sitzungen unterbrochen und erneut aufgebaut werden. Bei unterbrochenen Sitzungen laufen die Cmdlets in der Sitzung weiter. Dazu dienen die Cmdlets Disconnect-PSSession, Connect-PSSession und Receive-PSSession.

Um von einer lokalen PowerShell-Sitzung über das Netzwerk Programme auf einem Container zu starten, ist folgender Befehl zu verwenden:

Invoke-Command -ContainerId <ID> -RunAsAdministrator -ScriptBlock { <Befehl> } - RunAsAdministrator

Ein Beispiel für die Ausführung ist:

Invoke-Command -ContainerId b2f55c8c-28d7-4c0c-ab2b-9ee62c9ae6ea -RunAsAdministrator -ScriptBlock { ipconfig } - RunAsAdministrator

Fazit und Ausblick

Man merkt Windows Server 2016 mittlerweile den sehr weiten Entwicklungsstand an. Mit jeder Technical Preview bietet Microsoft mehr Möglichkeiten und Neuerungen des neuen Betriebssystems. Die Server-Container sowie die neue Nano-Installation stellen sicherlich die wichtigsten Neuerungen dar.

In Sachen Network Controller und Host Guardian Service stehen für die nächsten Technical Previews zu erwartende funktionale Neuerungen an. Hinsichtlich des Veröffentlichungstermins von Windows Server 2016 hat Microsoft bislang nur angekündigt, das dieser im Laufe des nächsten Jahres erscheinen wird. (mje)