Container und Docker im Windows Umfeld Teil2: Container Verwaltung

Anschließend an meinen Vorgängerartikel  "Erste Schritte mit Container und Docker im Windows Umfeld Teil 1: Container Host" soll es im heutigen Post um die Verwaltung der Container bzw. der Umgebung gehen. Ich bin inzwischen seit 10 Jahren als Trainer bei der ppedv AG beschäftigt und arbeite eigentlich genauso lange schon mit PowerShell, um mir die Verwaltung soweit möglich zu automatisieren bzw. einfacher zu machen. Mit Docker und Ubuntu wird man plötzlich mit einer neuen Syntax konfrontiert, die für mich zunächst weniger logisch erschien als die objektorientierte PowerShell, die ich gewohnt bin. Auch der Unterschied in der Schreibweise von Parametern war sehr gewöhnungsbedürftig. Unter Linux wird die Kurzform von Parametern mit einem "-" angeführt und die Langform mit "--".

Der Befehl:

docker pull

ist noch relativ einfach und dient dazu, die Container-Images mit ihren Layern aus einer Container-Registry herunterzuladen. Ich habe mich bisher immer der Container-Registry DockerHub bedient, auf der man sehr viele Container-Images finden und auch selber öffentlich bereitstellen kann.

docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]

Mit dem docker run-Befehl kann ein neuer Container auf Basis eines Images erstellt werden. Falls sich die Container-Images noch nicht im lokalen Cache befinden, weil sie bereits mit docker pull heruntergeladen wurden, werden diese ebenfalls mit heruntergeladen. Hier eine kurze Erklärung der verwendeten Parameter:

Kurzform Langform Beschreibung
-d --detach Startet den Container im Hintergrund
  --name Definiert den Namen des Containers
-p --expose Gibt an, welche Ports des Containers an welche Ports und IP-Adressen des Hosts gebunden werden
    Das IMAGE wird positional angegeben und hat daher keinen eigenen Parameternamen. Es setzt sich aus der Registry, dem Imagenamen und dem Tag zusammen. Falls keine Registry angegeben wird, verwendet Docker automatisch DockerHub. Mit dem Tag können verschiedene Versionen genutzt werden. Hier empfiehlt sich meistens :latest. Die verfügbaren Tags sieht man auf der Detailseite des Container-Images auf DockerHub.
    Das COMMAND, welches mit Argumenten innerhalb des Containers ausgeführt wird, wird ebenfalls positional hinten angehängt.

Eine Übersicht über laufende Container auf dem System bekommt man mit dem Befehl:

docker ps

Falls man alle Container sehen möchte, auch gestoppte, nutzt man:

docker ps -a

Für die Verwaltung einer Container-Instanz stehen folgende Befehle zur Verfügung:

# Startet einen bestehenden Container
docker start containername

# Beendet einen bestehenden Container
docker stop containername

# Startet einen bestehenden Container neu
docker restart containername

# Löscht einen bestehenden Container
docker rm containername

Es gibt noch viele weitere Befehle sowie Parameter und Verwendungsarten des Befehls docker run. Doch ich möchte mich hier zunächst auf die Grundlagen konzentrieren. Wer Interesse an weiterführenden Informationen hat, kann natürlich die Dokumentation nutzen oder sich unseren Kurs Docker und Kubernetes - Grundlagen Container-Virtualisierung ansehen.

Um sich die Sache grafischer zu machen, gibt es viele Tools. Bei meiner Recherche bin ich auf Portainer gestoßen, welches selbst als Container läuft und die Verwaltung von Containern, je nach Lizenz, sogar über mehrere Hosts grafisch im Browser ermöglicht. Portainer bietet zwei verschiedene Modelle an: Portainer CE (Community Edition) ist kostenlos und Open Source, während Portainer BE (Business Edition) zusätzliche Funktionen für den geschäftlichen Einsatz bietet. Für kleine Umgebungen mit nicht mehr als drei Nodes/Hosts ist die BE-Variante sogar ebenfalls kostenlos. Dabei ist es egal, ob man einfache Docker-Container oder Kubernetes-Cluster verwendet, alles kann innerhalb von Portainer verwaltet werden. Portainer selbst bietet verschiedene Installationsarten an, je nachdem, ob der Container-Host Linux, Windows Server oder WSL2 auf Windows ist. Auf die Installation und genaue Bedienung werde ich in weiteren Artikeln noch genauer eingehen.

Der nächste Artikel wird sich mit dem Thema Docker Volumes / Bind Mounts befassen.

Kommentare sind geschlossen