Docker Blogbeitrag 2 – Erste Schritte mit Docker

Nachdem wir in Docker Blogbeitrag 1 – Docker für Windows installieren Docker installiert haben geht es in dieser Lektion erst einmal darum, dass wir uns mit Docker unter Windows ein wenig vertraut machen, sehen wie die Oberfläche funktioniert und unseren ersten Container starten.

1.) Um Docker zu starten muss man auf das Docker Icon auf dem Desktop klicken oder Docker im Startmenü auswählen.

2.) Nachdem Docker gestartet ist hat sich augenscheinlich gar nicht so viel verändert. Es wird kein Fenster angezeigt und es gibt auch sonst keine großen Änderungen. Dass Docker läuft kann man daran erkennen, dass sich in der Benachrichtungsleiste der Windows Taskleiste nun ein kleiner Docker Wal befindet.

3.) Klickt man dieses Icon mit der rechten Maustaste an, so wird ein Kontext-Menü angezeigt über das man ein paar einfache Befehle an Docker abgeben kann.

Neben diesen sehr grundlegenden Befehlen gibt es hier keine weitere Möglichkeit Docker zu steuern, da man mit Docker über die Kommandozeile bzw. genauer über PowerShell kommuniziert.

4.) Als nächstes starten wir die PowerShell, indem wir im Startmenü einfach PowerShell eingeben und dann auf das entsprechende Icon klicken.

5.) Nun wird die PowerShell gestartet und wir können über den Befehl docker mit Docker kommunizieren.

6.) Einer der einfachsten Docker Befehle ist der Befehl

docker version

Dieser Befehl liefert einfach die aktuelle Version des Docker Clients und des Docker Servers zurück.

In unserem Fall ist der Docker Client Windows (was klar ist, weil das ja das System ist auf dem wir die PowerShell ausführen) und der Docker Server ist eine Linux-Maschine die unter Hyper-V ausgeführt wird. Diese Maschine kann man sehen wenn man die Verwaltungstools für Hyper-V startet. MobyLinuxVM ist der virtuelle Docker-Server. Und genau für diesen benötigen wir auch die Hyper-V Funktionen von Windows 10.

Inzwischen gibt es aber auch einen Windows Container Dienst auf den ich in einem der nächsten Blogeinträge eingehen werden.

7.) Nun wollen wir mal etwas Sinnvolles mit Docker machen und einen Web-Server in einem Container erzeugen und starten. Hierzu nutzen wir den nginx Web-Server (https://nginx.org/en/). Bevor wir einen Container erzeugen können in dem der nginx Webserver läuft müssen wir uns zunächst das Image für diesen Server laden. Das geschieht mit dem Befehl

docker image pull nginx

Da wir keine näheren Angaben zur Version gemacht haben wird die neuste Version heruntergeladen. Da wir auch keine eigene Docker Registry angegeben haben (das ist ein lokaler Server von wo sich Docker die Images holen kann) wird das Image vom öffentlichen Docker Hub heruntergeladen.

Nachdem das Image erfolgreich heruntergeladen wurde wird ein Digest angezeigt, das ist sozusagen der digitale Fingerabdruck des Images.

8.) Auf Basis dieses Images können wir nun einen neuen Container erzeugen in dem das nginx Image ausgeführt wird. Hierzu dient der folgende Befehl:

docker container run -d --name nginx-test -p 8080:80 nginx

Untersuchen wir kurz was dieser Befehl genau macht. Über docker container run geben wir Docker den Befehl, dass ein Container ausgeführt werden soll. Der Parameter -d kümmert sich darum, dass der Docker Container von der aktuellen PowerShell Session abgekoppelt (detached) wird. Das ist wichtig damit wir weiterhin mit unserer PowerShell arbeiten können. Geben wir diesen Befehl nicht an wird die PowerShell so lange blockiert wie der Docker Container ausgeführt wird. Über –name nginx-test nennen wir unseren Docker Container nginx-test. Über -p 8080:80 mappen wir den Port 8080 nach außen auf den Port 80 innerhalb des Docker Containers, das bedeutet, dass wir übe Port 8080 von außen auf den Webserver zugreifen können der im Docker Container läuft. Intern wird die Abfrage aber auf Port 80 (auf dem der Webserver im Docker Container läuft) umgelenkt. Das nginx ganz am Ende gibt schließlich das Image an auf dem der Docker Container basieren soll.

9.) Je nachdem wir der Windows Rechner konfiguriert ist meldet sich die Windows Firewall, da unser neuer Docker Container ja nun den Port 8080 öffnen möchte.

Das ist soweit in Ordnung. Hier wählen wir aus dass die Firewall für die Anwendung vpnkit sowohl für Domänennetzwerke als auch für private Netzwerke über das Netzwerk kommunizieren kann und dann klicken wir auf die Schaltfläche Zugriff zulassen.

10.) Mit Hilfe des Befehls docker container ps können wir uns alle aktuell ausgeführten Docker Container mit einigen zusätzlichen Informationen anzeigen lassen. Hier finden wir natürlich auch unseren Docker Container wieder.

11.) Natürlich wollen wir jetzt unseren nginx Webserver im Docker Container auch einmal in Aktion sehen. Dazu öffnen wir einen Browser und geben dort die URL http://65.52.229.47:8080 Hat alles so funktioniert wie es soll wird nun die Startseite des nginx Webservers angezeigt.

12.) Nachdem wir unseren ersten Container laufen haben stellt sich nun die Frage, wie wir den Container beenden können und wie wir alles was wir aufgebaut haben wieder los werden können. Um den Container zu stoppen geben wir den Befehl

docker container stop nginx-test

Konnte der Container erfolgreich gestoppt werden, so wird einfach der Name des Containers ausgegeben.

13.) Da der Docker Container weiterhin existiert könnten wir ihn, nachdem wir ihn angehalten haben natürlich auch wieder starten. Um den Container endgültig zu entfernen müssen wir den Befehl

docker container rm nginx-test

eingeben. Auch dieser Befehl wird im Erfolgsfall mit dem Namen des entfernten Docker Containers quittiert.

14.) Arbeitet man viel mit Docker können sich viele Images auf der lokalen Maschine ansammeln die man unter Umständen gar nicht mehr benötigt. Um das Image das wir heruntergeladen haben wieder loszuwerden geben wir den Befehl

docker image rm nginx

ein. Dieser Befehl entfernt das Image zunächst aus Docker und löscht dann die Dateien die dem Image zugrunde liegen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

%d Bloggern gefällt das: