Seite 2 - Windows-Server-Container (2)

Lesezeit
3 Minuten
Bis jetzt gelesen

Seite 2 - Windows-Server-Container (2)

10.12.2018 - 00:00
Veröffentlicht in:
Mit dem Docker-Client durchsuchen Sie den Docker-Hub nach Images auf Basis von Windows Server 2016. Dazu verwenden Sie zum Beispiel den Befehl docker search Microsoft. Um das Container-Image für die Installation von IIS auf Basis eines Core-Servers mit Windows Server 2016 herunterzuladen, verwenden Sie:
docker pull microsoft/iis: windowsservercore
Alle Images, die Sie bereits auf dem Server eingebunden haben, finden Sie mit docker images. Sobald das IIS-Image heruntergeladen haben, stellen Sie es mit docker run bereit:
docker run -d -p 80:80 microsoft/iis:windowsservercore ping -t localhost
Über den Befehl können Sie auch gleich die Ports aktivieren ("-p") und sicherstellen, dass der IIS als Dienst gestartet wird ("-d").

Bild 2: Innerhalb einer PowerShell-Sitzung können Sie einen Container erstellen, starten und auch verwalten.

Alle gestarteten Container sehen Sie mit docker ps. Nehmen Sie Änderungen an einem Container vor, können Sie diesen Container zum Beispiel als neues Image speichern und auf Basis dieses Images weitere Container. Dazu verwenden Sie den Befehl docker ps -a, um sich den Namen des Containers anzuzeigen. Anschließend erstellten Sie das Image mit docker commit:
docker commit Name Neuer Name
Auf Basis dieses Images erstellen Sie jederzeit weitere Container. Das Ganze lässt sich auch automatisieren, indem Sie ein Dockerfile verwenden. Erstellen Sie dazu ein Verzeichnis auf dem Host und in dem Verzeichnis eine Datei "Dockerfile" (ohne Endung). Sie können den Vorgang zum Beispiel mit der PowerShell durchführen:
powershell new-item c:\build\ Dockerfile –Force
Die Automatisierung nehmen Sie über Befehle in der Datei vor. Dazu müssen Sie die Datei "Dockerfile" im Notepad öffnen, etwa mit notepad c:\build\Dockerfile. In der Datei legen Sie dann zum Beispiel fest, dass ein neues Image erstellt werden soll, das den IIS als Basis nutzt. In der Datei können Sie auch bestimmen, dass Änderungen an der Konfiguration vorgenommen werden:
FROM microsoft/iis:windowsservercore
RUN echo "Dockerfile-Test für automatische Bereitstellung" 
 > c:\inetpub\wwwroot\index.html
Um auf Basis dieser Änderungen wieder ein Image zu erstellen, verwenden Sie in diesem Beispiel:
docker build -t iis-dockerfile c:\Build


Beispiel: Webserver im Container
Um eine Testumgebung zu installieren, können Sie zum Beispiel einen Webserver auf Basis von nginx in einem Container installieren. Dazu laden Sie die Installationsdateien von nginx [5] herunter und speichern diese im Container:
wget -uri 'http://nginx.org/ download/nginx-1.9.4.zip' 
-OutFile "c:\nginx-1.9.4.zip"
Nach dem Download befindet sich im Container im C-Laufwerk die Installationsdatei von nginx. Um die ZIP-Datei zu extrahieren, verwenden Sie den PowerShell-Befehl Expand-Archive:
Expand-Archive -Path C:\nginx1.9.4.zip -DestinationPath c:\ -Force
In unserem Beispiel erstellen Sie auf Basis des Servers ein neues Image, etwa mit:
$webserverimage = New-ContainerImage -ContainerName "web" 
-Publisher "Contoso" -Name nginxweb -Version 1.0
Danach heben Sie einen neuen Container aus der Taufe, der das Image als Grundlage verwendet:
$webservercontainer = New-Container -Name web1 
-ContainerImageName nginxweb -SwitchName "Virtual Switch"
Anschließend starten Sie den erstellten Container mit Start-Container $webservercontainer. Wollen Sie eine PowerShell-Sitzung öffnen, benötigen Sie entweder wieder die ID des Containers oder Sie fragen die ID des Containers direkt in der PowerShell ab:
Enter-PSSession -ContainerId $webservercontainer.ContainerId 
–RunAsAdministrator
Wollen Sie den Webserver im Container auf Basis von nginx starten, wechseln Sie in das Verzeichnis von nginx. Mit start nginx starten Sie den Webserver.

Bild 3: In der PowerShell erstellen Sie neue Images und aus Images neue Container, die wiederum in der PowerShell verwaltet werden.

Auf dem Container-Host erstellen Sie in der PowerShell ein neues Port-Mapping. Dieses leitet Zugriffe auf den Host zum Container weiter. In diesem Beispiel hat der Host die IP-Adresse 172.16.0.1. Der Container erhält die IP-Adresse 172.16.0.2:
Add-NetNatStaticMapping -NatName "ContainerNat" -Protocol TCP 
-ExternalIPAddress 0.0.0.0 -InternalIPAddress 172.16.0.2
-InternalPort 80 -ExternalPort 80
Zudem muss der Port des Webservers in der Firewall auf dem Containerhost freigegeben werden:
if (!(Get-NetFirewallRule | where {$_.Name -eq "TCP80"})) 
{ New-NetFirewallRule -Name "TCP80" -DisplayName "HTTP on TCP/80"
-Protocol tcp -LocalPort 80 -Action Allow -Enabled True }
Sie 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 schaffen Sie also enorm schnell zahlreiche Container mit allen Einstellungen, die Sie benötigen. Um ein Image zu erstellen, verwenden Sie zum Beispiel folgenden Befehl:
docker commit dockertest meincontainerimage
Sobald Sie das Image erstellt haben, können Sie es mit dem Befehl docker images anzeigen und es als Grundlage für einen neuen Container verwenden:
docker run -it --name dockertest2 meincontainerimage cmd
Um Container zu löschen, verwenden Sie wie schon erwähnt docker rm Name des Containers. Images löschen Sie wiederum mit docker rmi Name des Images.

Seite 2: Beispiel – Webserver im Container

Im dritten Teil geht es darum, welche Rolle Container in Azure spielen und wie es um Hyper-V-Container in Windows Server 2016 bestellt ist. Außerdem widmen wir uns der Frage nach der Kompatibilität und dem Parallelbetrieb von Containern. Im ersten Teil haben wir erklärt, wie die Betriebssystem-Virtualisierung mit Docker genau funktioniert und wie Sie Container mit dem Docker-Client verwalten.

<< Vorherige Seite Seite 2 von 2


ln/Thomas Joos

[5] http://nginx.org

Ähnliche Beiträge

Im Test: Heimdal Patch & Asset Management

Ein zeitgemäßes Patchmanagement darf sich angesichts der vielfältigen Bedrohungen nicht allein auf die Microsoft-Produkte konzentrieren, sondern muss sich auch verbreiteten Drittanbieteranwendungen widmen. Der dänische Anbieter Heimdal Security geht noch einen Schritt weiter und hat eine ganze Suite zum Schutz vor Cyberbedrohungen im Programm. Mit dem Fokus auf das Patchen haben wir uns das cloudbasierte Angebot genauer angesehen.

Device-Management mit Microsoft Intune und Office 365 - Zwei Wege, ein Ziel

Um Geräte im Netzwerk oder mobile Geräte, die auf das Netzwerk zugreifen, zu verwalten, bietet sich für Unternehmen entweder Office 365 Mobile Device Management oder Microsoft Intune an. Ein Unterschied zwischen den beiden Lösungen besteht vor allem im Preis. Während das Device-Management zu vielen Abonnements in Office 365 gehört, muss Microsoft Intune gesondert abonniert werden. In diesem Beitrag stellen wir beide Ansätze vor.