Anleitung: Windows Server 2016 Container erstellen

    Container erstellen in Windows Server 2016Damit Anwen­dungen in einem Con­tainer starten können, muss erst das Con­tainer-Feature aktviert werden. An­schließend lassen sich Win­dows Server Con­tainer auf einem Windows Server Core oder einem Nano Base Image er­stellen und mit PowerShell admini­strieren.

    Windows Server Container sind leichtgewichtig und werden nach dem Prinzip Just enough Virtualization auf physikalischen oder virtuellen Container-Hosts platziert. Sie lassen sich schnell erstellen, zügig starten und erlauben eine höhere Dichte als virtuelle Maschinen.

    Im Artikel Container in Windows Server 2016: Funktions­weise, Typen, Anwen­dungen habe ich eine erste Übersicht über Container in Windows Server 2016 gegeben, auf die nun dieser praktische Teil aufbaut.

    Update 26.10.2016: Dieser Beitrag beschreibt die Erstellung und Verwaltung von Containern mit dem PowerShell-Modul, wie es in der TP5 noch vorhanden war. Nach Erreichen des RTM-Status hat Microsoft mehrere in diesem Artikel verwendete Cmdlets entfernt und arbeitet diesem MSDN-Beitrag zufolge an einem neuen PS-Modul für Docker-Container.

    Aktuell lassen sich Container mit Docker-Kommandos einrichten und verwalten. In dieser Anleitung beschreibe ich die wicht­igsten Schrit­te und die dafür zu­stän­digen Befehle.

    Container Host vorbereiten

    Das Feature Containers lässt sich wie üblich im Server Manager mit dem Wizard Rollen und Features hinzufügen aktivieren. Windows Server 2016 muss nach erfolgreicher Installation neu gestartet werden. Im Labor dient ein virtueller Member Server für das Deployment der Container.

    Container-Feature über den Server-Manager installieren.

    Alternativ zum Server Manager aktiviert PowerShell Containers mit Install-WindowsFeature.

    Container-Feature mit PowerShell installieren.

    Nach dem Neustart des Servers kann mit dem PowerShell-Befehl

    Get-Command -Module Containers

    die aktuelle Liste der Cmdlets zur Verwaltung dieses Features ausgegeben werden. Befehle wie beispielsweise Get-Container, New-Container oder Start-Container gebrauche ich im Verlauf dieses Beitrags.

    Verfügbare PowerShell-Cmdlets für das Management von Containern.

    Auf einem frisch installierten Container-Host gibt das Cmdlet Get-ContainerImage kein Ergebnis aus. Für eine Container-Erstellung werden erst einmal OS Base Images wie Core- oder Nanoserver benötigt. Ein Get-ContainerHost zeigt den aktuellen Host samt Pfad zum eigenen Image Repository an: "C:\ProgramData\Microsoft\Windows\Hyper-V\Container Image Store".

    Container OS Base Images herunterladen und installieren

    Base Images lassen sich laden, nachdem

    Install-PackageProvider ContainerImage -Force

    (Stand ContainerImage Version 0.6.4.0) ausgeführt wurde, anschließend gibt das Repository die beiden Images für den Core- und den Nano Server mit Find-ContainerImage preis. Welches Base Image zum Container-Host passt, klärt die Tabelle im Grundlagenartikel. Auch sollten die Versionsnummer mit dem Host übereinstimmen.

    Package Provider hinzufügen, Container OS Base Images finden und installieren

    Ein Download mit anschließender Installation zum Beispiel für ein Nano OS WIM erfolgt mit dem Aufruf

    Install-ContainerImage -Name NanoServer

    Wurde ein OS Image installiert, kann Get-ContainerImage die bestehenden Images anzeigen. Über

    Get-ContainerImage -Name NanoServer | Uninstall-ContainerOSImage

    lässt sich ein Base Image wieder entfernen.

    Bequeme Variante mit Script

    Die bisher geschilderten Schritte zur Vorbereitung des Container-Hosts kann man mit Hilfe eines Scripts von Microsoft automatisieren. Es lässt sich mit

    wget -uri https://aka.ms/tp5/Install-ContainerHost -outfile C:\ContainerSetup.ps1

    importieren. Wenn Sie ContainerSetup.ps1 ausführen, dann prüft es unter anderem, ob das Container-Feature vorhanden ist, installiert auch den Docker-Daemon und lädt ein Windows Server Core OS Base Image herunter.

    Container-Host mit Script vorbereiten

    Windows Server Container erstellen, starten und stoppen

    Der Aufruf von

    New-Container -Name "WPRO-C-01" -ContainerImageName WindowsServerCore

    erstellt auf Basis der OS Images einen neuen Container. In diesem Fall erstelle ich gleich mehrere davon, die dann sehr schnell im ausgeschalteten Zustand vorliegen.

    Neue Container anlegen mit PowerShell

    Ein Get-Container zeigt alle Container auf dem Host an und mit

    Start-Container -Name "CONTAINERNAME"

    können sie gestartet und mit

    Stop-Container -Name "CONTAINERNAME"

    wieder beendet werden.

    Windows Server Container administrieren

    Mit

    Enter-PSSession -ContainerName "WPRO-C-01" -RunAsAdministrator

    erlangt man remote Zugang in den zuvor gestarteten Container. Jede Container-Sandbox stellt die gleiche Verzeichnis­struktur von Windows dar, in der sich auf bekannte Art navigieren lässt. Ein Exit-PSSession schließt die Sitzung zum Container wieder.

    Remote-Verbindung mit Container herstellen in PowerShell

    Führt man Get-Process im Container aus, dann zeigen sich die Prozesse pro Container mit zugehöriger ID und CPU-Auslastung.

    Get-Process in einem Container ausführen

    Anwendung in einem Container installieren

    Mit Get-WindowsFeature im Container lassen sich die installierten Features erkennen und durch ein Install-WindowsFeature in die Sandbox installieren. Eine klassische Anwendung für eine Developer-Umgebung kann der IIS sein, welcher mit

    Install-WindowsFeature Web-Server

    installiert wird. Im Anschluss an diesen Beitrag gehe ich näher auf die nötige Netzwerkkonfiguration ein.

    2 Kommentare

    Bild von Marco
    Marco sagt:
    22. November 2016 - 16:56

    Hey,

    habt ihr das auch schon mal auf Basis von der finalen Server 2016 Version getestet?

    Bei mir verhält sich das ziemlich merkwürdig. Ich habe Server 2016 sowohl physikalisch als auch als VM installiert, erhalte aber mit Get-command -module containers lediglich 3 Befehle für das ContainerNetwork.

    Bild von Marcel Küppers
    23. November 2016 - 10:56

    Hallo Marco, genau das habe ich im Header dieses Artikels geschrieben unter Update:

    Update 26.10.2016: Dieser Beitrag beschreibt die Erstellung und Verwaltung von Containern mit dem PowerShell-Modul, wie es in der TP5 noch vorhanden war. Nach Erreichen des RTM-Status hat Microsoft mehrere in diesem Artikel verwendete Cmdlets entfernt und arbeitet diesem MSDN-Beitrag zufolge an einem neuen PS-Modul für Docker-Container. Wir liefern in Kürze einen aktualisierten Text zum Einrichten von Containern unter Server 2016.

    Der Beitrag zu den Docker Commands geht bestimmt in den nächsten Tagen online.