Wie man den docker desktop start-Befehl verwendet, um Docker Desktop zu starten

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab untersuchen wir, wie der Befehl docker start verwendet wird, um den Lebenszyklus von Docker-Containern zu verwalten. Wir beginnen mit dem grundlegenden Zweck von docker start und dem Unterschied zu docker run.

Durch praktische Übungen lernen Sie, gestoppte Container synchron zu starten, Container im Detached-Modus zu starten und ein Timeout für den Startvorgang festzulegen. Am Ende dieses Labs werden Sie in der Lage sein, docker start effizient einzusetzen, um Ihre Docker-Container wiederaufzunehmen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555148{{"Wie man den docker desktop start-Befehl verwendet, um Docker Desktop zu starten"}} docker/ps -.-> lab-555148{{"Wie man den docker desktop start-Befehl verwendet, um Docker Desktop zu starten"}} docker/start -.-> lab-555148{{"Wie man den docker desktop start-Befehl verwendet, um Docker Desktop zu starten"}} docker/stop -.-> lab-555148{{"Wie man den docker desktop start-Befehl verwendet, um Docker Desktop zu starten"}} docker/create -.-> lab-555148{{"Wie man den docker desktop start-Befehl verwendet, um Docker Desktop zu starten"}} docker/pull -.-> lab-555148{{"Wie man den docker desktop start-Befehl verwendet, um Docker Desktop zu starten"}} end

Verstehen des Zwecks von docker start

In diesem Schritt werden wir den Zweck des Befehls docker start verstehen. Der Befehl docker start wird verwendet, um einen oder mehrere gestoppte Container zu starten. Wenn Sie einen Container mit docker stop anhalten, wird sein Zustand gespeichert und kann später mit docker start fortgesetzt werden. Dies unterscheidet sich von docker run, das einen neuen Container aus einem Image erstellt und dann startet.

Zuerst erstellen wir einen einfachen Container, den wir anhalten und dann starten können. Wir verwenden das ubuntu-Image und führen einen Befehl aus, der den Container für kurze Zeit am Laufen hält.

docker run -d --name my-ubuntu ubuntu sleep 60

Dieser Befehl startet einen Ubuntu-Container im Detached-Modus (-d), benennt ihn my-ubuntu und führt den Befehl sleep 60 im Container aus. Der Befehl sleep 60 hält den Container für 60 Sekunden aktiv.

Nun überprüfen wir den Status des Containers mit docker ps.

docker ps

Sie sollten den Container my-ubuntu mit dem Status Up sehen.

Als nächstes halten wir den Container mit dem Befehl docker stop an.

docker stop my-ubuntu

Dieser Befehl sendet ein Stopp-Signal an den my-ubuntu-Container.

Nun überprüfen wir den Status des Containers erneut mit docker ps.

docker ps

Sie sollten feststellen, dass der my-ubuntu-Container nicht mehr in der Ausgabe von docker ps aufgeführt ist (welche nur laufende Container anzeigt). Um alle Container einschließlich der gestoppten zu sehen, können Sie docker ps -a verwenden.

docker ps -a

Jetzt sollte my-ubuntu mit dem Status Exited aufgeführt sein. Dies bestätigt, dass der Container angehalten wurde.

Abschließend verwenden wir den Befehl docker start, um den gestoppten Container zu starten.

docker start my-ubuntu

Dieser Befehl startet den my-ubuntu-Container.

Überprüfen wir den Status des Containers ein letztes Mal mit docker ps.

docker ps

Sie sollten den my-ubuntu-Container wieder mit dem Status Up sehen. Dies zeigt, dass docker start den zuvor gestoppten Container erfolgreich fortgesetzt hat.

Zusammenfassend wird docker start verwendet, um einen gestoppten Container fortzusetzen und seinen Zustand zu erhalten, während docker run einen neuen Container erstellt und startet.

Docker Container synchron starten

In diesem Schritt untersuchen wir, wie ein Docker-Container synchron gestartet wird. Bei einem synchronen Start wartet der Befehl, bis der Container seine Ausführung beendet hat, bevor die Kontrolle an das Terminal zurückgegeben wird. Dies ist das Standardverhalten, wenn Sie einen Befehl direkt in einem Container ohne die -d (Detached) Option ausführen.

Verwenden wir einen einfachen ubuntu-Container, um die synchrone Ausführung zu demonstrieren. Wir führen einen Befehl aus, der eine Nachricht ausgibt und dann beendet.

Stellen Sie zunächst sicher, dass das ubuntu-Image verfügbar ist. Falls nicht, laden Sie es:

docker pull ubuntu

Nun führen wir einen Container synchron aus, der "Hello from Ubuntu" ausgibt und sich dann beendet.

docker run --rm ubuntu echo "Hello from Ubuntu"

Lassen Sie uns diesen Befehl aufschlüsseln:

  • docker run: Dies ist der Befehl zum Erstellen und Starten eines neuen Containers.
  • --rm: Diese Option entfernt den Container automatisch nach Beendigung. Nützlich für temporäre Container wie diesen.
  • ubuntu: Der Name des zu verwendenden Images.
  • echo "Hello from Ubuntu": Der im Container auszuführende Befehl.

Bei Ausführung sehen Sie die Ausgabe "Hello from Ubuntu" direkt in Ihrem Terminal. Die Eingabeaufforderung kehrt erst zurück, nachdem der echo-Befehl im Container abgeschlossen ist und der Container beendet wurde. Dies ist synchrone Ausführung.

Vergleichen Sie dies mit dem Detached-Modus aus dem vorherigen Schritt, wo der Befehl sofort zurückkehrte und der Container im Hintergrund lief.

Um das synchrone Verhalten weiter zu veranschaulichen, führen wir einen längeren Befehl aus:

docker run --rm ubuntu sleep 5

Dieser Befehl startet einen Ubuntu-Container und führt den sleep 5-Befehl aus, der die Ausführung für 5 Sekunden pausiert. Sie werden feststellen, dass Ihr Terminal für 5 Sekunden blockiert ist, bevor der Befehl abgeschlossen wird. Dies liegt daran, dass der docker run-Befehl auf die Beendigung des sleep 5-Befehls im Container wartet.

Dieser synchrone Modus ist nützlich, wenn Sie einen Befehl in einem Container ausführen müssen und auf dessen Ausgabe oder Abschluss warten müssen, bevor Sie mit weiteren Aktionen in Ihrem Skript oder Workflow fortfahren.

Docker Container im Detached-Modus starten

In diesem Schritt lernen wir, wie man einen Docker-Container im Detached-Modus startet. Der Detached-Modus bedeutet, dass der Container im Hintergrund läuft und der Docker-Befehl sofort die Kontrolle an Ihr Terminal zurückgibt. Dies ist nützlich für langlebige Dienste oder Anwendungen, mit denen Sie nicht direkt im Terminal interagieren müssen.

Um einen Container im Detached-Modus zu starten, verwenden Sie das Flag -d oder --detach mit dem Befehl docker run oder docker start.

Lassen Sie uns einen einfachen Nginx-Webserver im Detached-Modus starten. Laden Sie zunächst das nginx-Image, falls es nicht lokal vorhanden ist.

docker pull nginx

Nun starten wir den Nginx-Container im Detached-Modus und mappen Port 80 des Containers auf Port 8080 Ihres Host-Systems.

docker run -d --name my-nginx -p 8080:80 nginx

Hier die Erklärung des Befehls:

  • docker run: Erstellt und startet einen neuen Container
  • -d: Startet den Container im Detached-Modus (im Hintergrund)
  • --name my-nginx: Vergibt den Namen my-nginx für den Container
  • -p 8080:80: Mappt Port 80 im Container auf Port 8080 des Hosts. Dadurch können Sie den Nginx-Webserver im Browser unter http://localhost:8080 aufrufen
  • nginx: Der Name des zu verwendenden Images

Nach Ausführung des Befehls sehen Sie eine lange Zeichenkette im Terminal - die Container-ID. Die Eingabeaufforderung erscheint sofort wieder, was zeigt, dass der Container im Hintergrund läuft.

Überprüfen Sie den laufenden Container mit:

docker ps

Der my-nginx-Container sollte mit Status Up aufgelistet sein.

Testen Sie den Zugriff auf den Nginx-Webserver mit:

curl http://localhost:8080

Sie sollten den HTML-Inhalt der Nginx-Startseite sehen, was bestätigt, dass der Container läuft und über den gemappten Port erreichbar ist.

Um den Container zu stoppen:

docker stop my-nginx

Verifizieren Sie mit docker ps, dass der Container nicht mehr läuft.

docker ps

Der my-nginx-Container sollte nicht mehr in der Liste erscheinen.

Das Starten von Containern im Detached-Modus ist essentiell für Dienste und Anwendungen, die kontinuierlich laufen müssen, ohne das Terminal zu blockieren.

Docker Container mit Timeout starten

In diesem Schritt lernen wir, wie man einen Docker-Container mit einem Timeout startet. Der Befehl docker start bietet das Flag --attach, das es ermöglicht, sich an die STDOUT/STDERR-Ausgabe des Containers anzuhängen und Signale weiterzuleiten. In Kombination mit --attach kann man auch das --timeout-Flag verwenden, um einen Timeout für das Stoppen des Containers nach Client-Trennung festzulegen. Dies ist besonders nützlich, um sicherzustellen, dass ein Container nicht unbegrenzt weiterläuft, wenn der startende Client beendet wird.

Zuerst erstellen wir einen Container, den wir mit Timeout starten können. Wir verwenden das ubuntu-Image und führen einen Befehl aus, der den Container aktiv hält.

docker create --name my-timeout-ubuntu ubuntu sleep 60

Dieser Befehl erstellt einen Container namens my-timeout-ubuntu basierend auf dem ubuntu-Image und setzt den Befehl auf sleep 60. Beachten Sie, dass wir hier docker create verwendet haben, was den Container erstellt, aber nicht startet.

Nun starten wir diesen Container mit docker start und den Flags --attach und --timeout. Wir setzen den Timeout auf 5 Sekunden.

docker start --attach --timeout 5 my-timeout-ubuntu

Hier die Erklärung des Befehls:

  • docker start: Startet einen gestoppten Container
  • --attach: Hängt sich an die STDOUT/STDERR-Ausgabe des Containers an und leitet Signale weiter
  • --timeout 5: Setzt einen Timeout von 5 Sekunden. Wenn der Client (in diesem Fall Ihr Terminal) die Verbindung trennt, wartet Docker 5 Sekunden auf ein ordnungsgemäßes Stoppen des Containers. Falls dieser nicht innerhalb von 5 Sekunden stoppt, sendet Docker ein SIGKILL-Signal zum erzwungenen Stoppen
  • my-timeout-ubuntu: Der Name des zu startenden Containers

Bei Ausführung dieses Befehls werden Sie an die Ausgabe des Containers angehängt. Da der Container nur sleep 60 ausführt, sehen Sie zunächst keine Ausgabe.

Simulieren wir nun eine Client-Trennung durch Drücken von Strg+C im Terminal. Dies trennt die Verbindung zum Container.

Nach Strg+C beginnt der Timeout-Prozess. Docker wartet 5 Sekunden auf das Stoppen des my-timeout-ubuntu-Containers. Da der Container sleep 60 ausführt, wird er nicht innerhalb von 5 Sekunden stoppen, sodass Docker ihn zwangsweise beendet.

Überprüfen Sie mit docker ps -a, ob der Container gestoppt wurde:

docker ps -a

Der Container my-timeout-ubuntu sollte mit Status Exited aufgeführt sein, was bestätigt, dass der Timeout-Mechanismus funktioniert hat.

Die Verwendung des --timeout-Flags mit docker start --attach ist eine bewährte Methode zur Lebenszyklusverwaltung von Containern, die mit Client-Verbindung gestartet werden, um sicherzustellen, dass sie auch bei unerwarteter Client-Beendigung ordnungsgemäß bereinigt werden.

Zusammenfassung

In diesem Lab haben wir den grundlegenden Zweck des docker start-Befehls kennengelernt, nämlich das Fortsetzen eines gestoppten Containers unter Beibehaltung seines Zustands. Wir haben ihn von docker run abgegrenzt, der einen neuen Container erstellt und startet. Durch praktische Schritte haben wir demonstriert, wie man einen Container erstellt, ihn mit docker stop stoppt, seinen gestoppten Zustand mit docker ps -a überprüft und ihn schließlich mit docker start neu startet, wobei der laufende Status mit docker ps bestätigt wurde.

Wir haben auch verschiedene Möglichkeiten untersucht, Docker Desktop mit dem Befehl docker desktop start zu starten, einschließlich des synchronen Starts, im Detached-Modus und mit einem spezifizierten Timeout. Diese Optionen bieten Flexibilität bei der Steuerung des Startverhaltens von Docker Desktop basierend auf spezifischen Anforderungen und Workflows.