Einführung
In der modernen Softwareentwicklung sind Container zu einer gängigen Methode geworden, um Anwendungen zu paketieren und bereitzustellen. Ein Container ist keine vollständige virtuelle Maschine. Er verwendet den Kernel des Hosts gemeinsam, führt die Anwendung jedoch in einer isolierten Prozessumgebung mit eigener Sicht auf das Dateisystem und eigener Netzwerkkonfiguration aus.
In diesem Lab machen Sie Ihre ersten Schritte mit Docker, indem Sie eine Anwendung aus der Praxis ausführen: den Nginx-Webserver. Das ist nützlich, weil viele Container nicht nur einmalige Befehle ausführen. Sie laufen als langlebige Services. Deshalb müssen Sie ihren Lebenszyklus verstehen.
Dies ist ein wichtiger Unterschied zum Beispiel hello-world. Statt eines Containers, der startet, eine Ausgabe erzeugt und sich beendet, arbeiten Sie nun mit einem Service-Container, der weiterlaufen soll, solange sein Hauptprozess aktiv ist.
Sie lernen:
- Einen Container im Hintergrund zu starten (Detached-Modus).
- Den Status Ihrer laufenden Container anzuzeigen.
- Einen Container zu beenden, wenn Sie ihn nicht mehr benötigen.
- Einen Container zu entfernen, um Systemressourcen freizugeben.
Am Ende dieses Labs verstehen Sie den vollständigen Lebenszyklus eines Docker-Containers: erstellen, ausführen, beenden und löschen.
Einen Webserver im Hintergrund ausführen
In diesem Schritt starten Sie einen Nginx-Webserver.
Wenn Sie einen Befehl im Terminal ausführen, belegt er normalerweise den Bildschirm, bis er abgeschlossen ist. Bei einem Service wie einem Webserver soll der Prozess jedoch dauerhaft im Hintergrund laufen, damit Sie Ihr Terminal für andere Aufgaben verwenden können. In Docker wird dies als „Detached-Modus“ bezeichnet.
Mit dem Flag -d führen Sie den Container im Detached-Modus aus. Außerdem verwenden Sie das Flag --name, um dem Container einen bestimmten, leicht zu merkenden Namen zu geben.
Der Detached-Modus ändert nicht, was der Container tut. Er ändert, wie Ihr Terminal mit dem Container verbunden ist. Der Service läuft weiter, während Ihre Shell-Eingabeaufforderung sofort zurückkehrt.
Führen Sie den folgenden Befehl aus, um einen Nginx-Container mit dem Namen my-nginx zu starten:
docker run --name my-nginx -d nginx
Der Befehl im Detail:
docker run: Der Befehl zum Erstellen und Starten eines neuen Containers.--name my-nginx: Weist dem Container den Namen „my-nginx“ zu. Wenn Sie diese Option weglassen, weist Docker einen zufälligen Namen wiehappy_hopperzu.-d: Führt den Container im Detached-Modus (im Hintergrund) aus.nginx: Das zu verwendende Image. Docker sucht zunächst lokal danach. Falls es fehlt, lädt Docker es von Docker Hub herunter.
Die Ausgabe:
Im Terminal wird eine lange Zeichenfolge ausgegeben. Dabei handelt es sich um die Container-ID. Dass Ihre Shell-Eingabeaufforderung sofort zurückkehrt, bestätigt, dass der Container im Hintergrund läuft.
Die Container-ID ist der interne Bezeichner von Docker, während der Containername eine benutzerfreundliche Bezeichnung ist. Im Arbeitsalltag sind Namen häufig leichter zu verwenden als lange IDs.
Den Containerstatus prüfen
Nachdem Sie den Container gestartet haben, müssen Sie überprüfen, ob er wie erwartet läuft. Der Befehl docker ps listet alle aktiven Container auf.
Führen Sie den folgenden Befehl aus:
docker ps
Sie sollten eine ähnliche Ausgabe sehen:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1b2c3d4e5f6 nginx "/docker-entrypoint.…" 10 seconds ago Up 10 seconds 80/tcp my-nginx
Die Ausgabe verstehen:
- CONTAINER ID: Die eindeutige ID dieses Containers, hier in gekürzter Form der zuvor angezeigten langen Zeichenfolge.
- IMAGE: Das ausgeführte Image (
nginx). - STATUS:
Upzeigt an, dass der Container ordnungsgemäß läuft. - NAMES: Der von uns zugewiesene Name (
my-nginx).
Wenn Sie diesen Eintrag sehen, läuft Ihr Webserver erfolgreich im Hintergrund!
Die Ausgabe von docker ps ist eine Ihrer wichtigsten Ansichten für den laufenden Betrieb. Sie zeigt, welche Container derzeit aktiv sind, aus welchem Image sie stammen und wie lange sie bereits laufen.
Den Service beenden
Wenn Sie einen Service nicht mehr benötigen oder ihn neu konfigurieren müssen, müssen Sie den laufenden Container beenden.
Der Befehl docker stop sendet ein Signal an den Container, damit dieser kontrolliert herunterfährt. Sie können den Container entweder über seine Container-ID oder über seinen Namen ansprechen. Da wir ihn my-nginx genannt haben, verwenden wir den Namen.
Ein kontrolliertes Beenden ist wichtig, weil viele Services Zeit benötigen, um Dateien zu schließen, Ports freizugeben oder laufende Aufgaben abzuschließen. Einen Container zu beenden bedeutet nicht einfach, ihn „auszuschalten“; vielmehr wird der Hauptprozess aufgefordert, sich sauber zu beenden.
Führen Sie den folgenden Befehl aus:
docker stop my-nginx
Das Terminal gibt my-nginx aus, um zu bestätigen, dass der Befehl empfangen wurde.
Überprüfen, ob der Container beendet wurde:
Führen Sie docker ps erneut aus. Die Liste sollte leer sein, oder my-nginx sollte darin nicht mehr erscheinen.
Um zu bestätigen, dass der Container weiterhin vorhanden ist, aber beendet wurde, verwenden Sie das Flag -a (all):
docker ps -a
Nun wird my-nginx mit dem Status Exited aufgelistet.
Ressourcen aufräumen
Durch das Beenden eines Containers wird dieser nicht gelöscht. Er bleibt auf Ihrer Festplatte erhalten und bewahrt seine Logs und Konfiguration. Das ist nützlich, wenn Sie ihn später mit docker start erneut starten möchten.
Dies ist ein weiterer wichtiger Unterschied im Lebenszyklus: Erstellen/Ausführen, Beenden und Entfernen sind getrennte Vorgänge. Docker hält diese Zustände getrennt, damit Sie Container vor dem Löschen überprüfen oder neu starten können.
Wenn Sie den Container jedoch vollständig nicht mehr benötigen, sollten Sie ihn entfernen, damit Ihr System sauber bleibt. Der Befehl docker rm entfernt beendete Container.
Führen Sie den folgenden Befehl aus, um my-nginx zu entfernen:
docker rm my-nginx
Das Terminal gibt my-nginx aus, um die Entfernung zu bestätigen.
Letzte Überprüfung:
Führen Sie ein letztes Mal docker ps -a aus. Sie werden sehen, dass der Container vollständig verschwunden ist.
Hinweis: Einen laufenden Container können Sie normalerweise nicht mit docker rm entfernen. Sie müssen ihn zuerst beenden, wie wir es getan haben, oder das Flag -f (force) verwenden. Das kontrollierte Beenden ist jedoch die bevorzugte Methode.
Zusammenfassung
In diesem Lab haben Sie den vollständigen Lebenszyklus eines Docker-Containers erfolgreich verwaltet. Sie haben gelernt:
- Einen Hintergrund-Service mit
docker run -dauszuführen. - Den Status aktiver Container mit
docker pszu prüfen. - Einen Service mit
docker stopkontrolliert zu beenden. - Einen beendeten Container mit
docker rmzu entfernen, um Ressourcen freizugeben.
Diese vier Befehle gehören zum täglichen Werkzeug jedes Docker-Nutzers. Sie sind nun bereit, die Interaktion mit laufenden Containern genauer zu untersuchen.



