Docker Blogbeitrag 3 – Mit Docker Containern arbeiten

Im Blogbeitrag 2 haben wir grundsätzlich gesehen wie man aus einem Image einen Docker Container erzeugt und wie man dann auf den Web Server zugreifen kann der in dem von uns erzeugten Docker Container läuft. Außerdem haben wir gesehen wie man einen Docker Container wieder beendet und dann sowohl den Container als auch das Image wieder vom lokalen Rechner entfernen kann. In dieser Lektion schauen wir uns nun einmal näher an wie man mit Docker Containern arbeiten kann, d.h. wie man diese startet, stoppt, pausiert usw.)

1.) Als erstes erzeugen wir uns mal einen neuen Docker Container mit dem folgenden Befehl

Da das entsprechende Ubuntu Image bisher noch nicht auf unserem lokalen Rechner installiert ist wird es zunächst vom Docker Hub heruntergeladen und danach wird unser Container erstellt. Der Parameter -i sorgt dafür, dass der Container interaktiv läuft und wir auf STDIN zugreifen können. -t allokiert ein pseudo-TTY über das wir dann mit dem Container interagieren können. Über ubuntu:16.04 geben wir direkt die Ubuntu Version an die wir haben möchten. /bin/bash schließlich gibt an das die bash Shell gestartet wird.

Nachdem das Image heruntergeladen wurde und der Container ausgeführt wird, landen wir in unserer PowerShell Konsole in der bash Shell des Containers.

2.) In der bash Shell können wir nun Linux-Befehle eingeben die im Container ausgeführt werden. Als Beispiel geben wir hier einmal ls ein um uns den Inhalt des aktuellen Pfades anzeigen zu lassen.

3.) Grundsätzlich haben wir jetzt das Problem, dass wir den Docker Container nicht mehr über diese PowerShell Konsole steuern können, da wir ja jetzt in einer bash Shell im laufenden Container sind. Um wieder Befehle gegen Docker ausführen zu können müssen wir einfach ein zweites PowerShell Fenster öffnen. Hierzu klicken wir einfach mit der rechten Maustaste auf das PowerShell Icon in der Taskleiste und im Menü wählen wir dann den Menüeintrag Windows PowerShell aus. Hierdurch wird ein zweites PowerShell Fenster gestartet.

4.) In der neuen PowerShell Konsole geben wir nun den Befehl

ein. Der Befehl wird mit der eindeutigen Id des Containers bestätigt.

Hierbei ist die Zahl 9fb5bb67adc6 die eindeutige Id des Containers und wird in jedem System eine andere sein. Ermittelt habe ich die Id über das Prompt der bash Shell im anderen PowerShell Fenster.

Nach dem Absetzen des Befehls wird der Docker Container beendet und im ersten PowerShell Fenster wird nun exit angezeigt und man ist aus der bash Shell wieder zurück in PowerShell.

5.) Nun geben wir im zweiten Fenster einmal den Befehl

ein. Das Ergebnis das zurückgeliefert wird ist leer. Dies liegt daran, dass docker container ps standardmäßig nur die aktuell laufenden Docker Container anzeigt.

6.) Damit alle Docker Container angezeigt werden, nicht nur die, die gerade ausgeführt werden muss man den Befehl

verwenden. Nun wird auch unser Docker Container angezeigt der gerade nicht läuft. Mit Hilfe dieses Befehls kann man übrigens auch die eindeutige Id des Docker Containers herausfinden die man für die unterschiedlichen Befehle zur Steuerung der Container benötigt.

7.) Im Folgenden wollen wir nun einmal sehen, wie man Docker Container pausieren und wieder starten kann. Hierzu erzeugen wir in der ersten PowerShell Konsole einen neuen Container mit Hilfe des Befehls

Da wir bereits oben das Image heruntergeladen haben wird dies nicht noch einmal getan sondern es wird direkt auf der Basis des heruntergeladenen Images ein neuer Container erzeugt und wir landen in der bash Shell. Dass wir einen neuen Container erzeugt haben kann man daran sehen, dass der Container eine neue Id, die Id 3635c4bc8aca hat (zum Vergleich – der Container oben hatte die Id 9fb5bb67adc6). In Eurer Umgebung haben die beiden Container natürlich andere Ids.

8.) Um zu sehen dass wir nun zwei Container haben wechseln wir nun zum zweiten PowerShell Fenster und geben dort den Befehl

ein. Es werden die beiden Container mit Id 3635c4bc8aca bzw. Id 9fb5bb67adc6 angezeigt. Man kann sehen, dass der eine Container seit 28 Sekunden läuft, der andere Container vor 57 Sekunden beendet wurde.

9.) Um im nächsten Experiment zu sehen dass der Container auch wirklich pausiert und wieder gestartet wird geben wir in der bash shell den folgenden Befehl ein:

Dieser Befehl funktioniert wie folgt. Zunächst haben wir über while true eine Endlosschleife. do date schreibt die aktuelle Zeit und das aktuelle Datum in die Konsole. Über sleep 5 wird 5 Sekunden gewartet und done ist das Ende der Schleife. Es wird also von diesen Befehlen alle 5 Sekunden die aktuelle Zeit ausgegeben.

10.) Als nächstes wechseln wir wieder zum zweiten PowerShell Fenster und geben dort den Befehl

ein. Dieser wird mit der Id quittiert. Auf Deinem Rechner wird die Id des Containers natürlich eine andere sein, die Du verwenden musst.

11.) Mit Hilfe des Befehls

sehen wir, dass der Container gerade gestoppt ist.

12.) Nun warten wir ein bisschen und geben dann den Befehl

ein. Auch dieser Befehl wird wieder durch die Id des Containers bestätigt.

Wenn wir nun in die erste PowerShell Konsole wechseln sehen wir, dass es zwischen den ausgegeben Zeitpunkten eine Lücke gibt.

13.) Nun werden wir den Container über das zweite PowerShell Fenster mit dem Befehl

beenden.

Im ersten PowerShell Fenster ist die bash Shell nun beendet und man ist wieder in der PowerShell gelandet.

14.) Zum Schluss dieses Beitrags räumen wir noch auf. Mit dem Befehl

können wir beide Container in einem Rutsch aufräumen. Der Befehl wird mit beiden Ids bestätigt, d.h. beide Container wurden entfernt.

 

15.) Über den Befehl

löschen wir dann noch das am Anfang der Lektion heruntergeladene Ubuntu-Image.

Schreibe einen Kommentar

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

%d Bloggern gefällt das: