Wie man den Befehl docker container start zum Neustarten von Containern verwendet

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 lernen Sie, wie Sie den Befehl docker container start verwenden, um gestoppte Container neu zu starten. Sie beginnen mit der Erstellung und dem Stoppen von Containern unter Verwendung der Images hello-world und ubuntu.

Anschließend erkunden Sie verschiedene Methoden zum Starten eines gestoppten Containers, darunter das einfache Starten, das Starten mit Anhängen der Ausgabe sowie das interaktive Starten. Dies demonstriert die Flexibilität des Befehls docker container start für die Verwaltung des Container-Lebenszyklus.


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/attach("Attach to Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555122{{"Wie man den Befehl docker container start zum Neustarten von Containern verwendet"}} docker/ps -.-> lab-555122{{"Wie man den Befehl docker container start zum Neustarten von Containern verwendet"}} docker/start -.-> lab-555122{{"Wie man den Befehl docker container start zum Neustarten von Containern verwendet"}} docker/stop -.-> lab-555122{{"Wie man den Befehl docker container start zum Neustarten von Containern verwendet"}} docker/attach -.-> lab-555122{{"Wie man den Befehl docker container start zum Neustarten von Containern verwendet"}} docker/pull -.-> lab-555122{{"Wie man den Befehl docker container start zum Neustarten von Containern verwendet"}} end

Container erstellen und stoppen

In diesem Schritt lernen Sie, wie Sie einen Docker-Container erstellen und stoppen. Ein Container ist eine ausführbare Instanz eines Images. Sie können Container mit der Docker-API oder CLI erstellen, starten, stoppen, verschieben oder löschen.

Zuerst laden wir das hello-world-Image von Docker Hub. Dies ist ein sehr kleines Image, das sich gut für Tests eignet.

docker pull hello-world

Sie sollten eine Ausgabe sehen, die anzeigt, dass das Image heruntergeladen und extrahiert wird.

Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Nun erstellen und starten wir einen Container aus dem hello-world-Image. Wenn Sie diesen Befehl ausführen, erstellt Docker einen neuen Container und führt den im Image definierten Befehl aus. Im Fall von hello-world gibt der Befehl einfach eine Nachricht aus und beendet sich dann.

docker run hello-world

Sie sollten eine ähnliche Ausgabe wie diese sehen:

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

Diese Ausgabe bestätigt, dass der Container erfolgreich ausgeführt wurde und seine Nachricht ausgegeben hat. Da der Befehl im Container abgeschlossen ist, wurde der Container gestoppt.

Um alle Container auf Ihrem System anzuzeigen, einschließlich der gestoppten, können Sie den Befehl docker ps -a verwenden.

docker ps -a

Sie sehen eine Liste von Containern. Der hello-world-Container sollte in der Liste sein und seinen Status als Exited anzeigen.

CONTAINER ID   IMAGE         COMMAND    CREATED         STATUS                      PORTS    NAMES
...            hello-world   "/hello"   About a minute ago   Exited (0) 58 seconds ago            ...

Nun erstellen wir einen weiteren Container, diesmal verwenden wir das ubuntu-Image und führen einen Befehl aus, der den Container für kurze Zeit am Laufen hält. Wir verwenden den sleep-Befehl, um den Container für 10 Sekunden aktiv zu halten.

Zuerst laden wir das ubuntu-Image:

docker pull ubuntu

Sie sollten eine Ausgabe sehen, die anzeigt, dass das Image heruntergeladen wird.

Using default tag: latest
latest: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

Nun starten wir einen Container aus dem ubuntu-Image und führen den Befehl sleep 10 aus. Wir führen dies im Detached-Modus (-d) aus, damit der Container im Hintergrund läuft und unser Terminal nicht blockiert.

docker run -d ubuntu sleep 10

Dieser Befehl gibt die Container-ID aus.

[container_id]

Verwenden Sie docker ps, um die laufenden Container anzuzeigen.

docker ps

Sie sollten den ubuntu-Container mit dem Status Up in der Liste sehen.

CONTAINER ID   IMAGE    COMMAND       CREATED         STATUS         PORTS    NAMES
[container_id]   ubuntu   "sleep 10"   About a minute ago   Up 5 seconds            ...

Nach etwa 10 Sekunden wird der sleep 10-Befehl beendet und der Container stoppt. Verwenden Sie erneut docker ps -a, um alle Container einschließlich des gestoppten anzuzeigen.

docker ps -a

Der ubuntu-Container sollte nun den Status Exited haben.

CONTAINER ID   IMAGE    COMMAND       CREATED         STATUS                      PORTS    NAMES
[container_id]   ubuntu   "sleep 10"   About a minute ago   Exited (0) 5 seconds ago             ...
...

Abschließend stoppen wir den ubuntu-Container manuell mit dem Befehl docker stop. Sie können einen laufenden Container anhand seiner ID oder seines Namens stoppen. Wir verwenden die Container-ID, die beim Starten des Containers ausgegeben wurde. Ersetzen Sie [container_id] durch die tatsächliche ID Ihres ubuntu-Containers.

docker stop [container_id]

Dieser Befehl gibt die ID des gestoppten Containers aus.

[container_id]

Verwenden Sie erneut docker ps, um zu bestätigen, dass der Container nicht mehr läuft.

docker ps

Der ubuntu-Container sollte nicht in der Liste der laufenden Container erscheinen.

Gestoppten Container starten

Im vorherigen Schritt haben wir einen Container basierend auf dem ubuntu-Image erstellt und gestoppt. In diesem Schritt lernen Sie, wie Sie einen gestoppten Container neu starten.

Zuerst listen wir alle Container auf, einschließlich der gestoppten, um die ID des erstellten ubuntu-Containers zu finden.

docker ps -a

Suchen Sie den Container mit dem ubuntu-Image und dem Status Exited. Notieren Sie sich dessen CONTAINER ID.

CONTAINER ID   IMAGE    COMMAND       CREATED          STATUS                      PORTS    NAMES
[container_id]   ubuntu   "sleep 10"   About 5 minutes ago   Exited (0) 4 minutes ago             ...
...

Nun können wir diesen gestoppten Container mit dem Befehl docker start gefolgt von der Container-ID starten. Ersetzen Sie [container_id] durch die tatsächliche ID Ihres ubuntu-Containers.

docker start [container_id]

Dieser Befehl gibt die ID des gestarteten Containers aus.

[container_id]

Verwenden Sie docker ps, um zu überprüfen, ob der Container nun läuft.

docker ps

Sie sollten den ubuntu-Container mit dem Status Up in der Liste sehen.

CONTAINER ID   IMAGE    COMMAND       CREATED          STATUS         PORTS    NAMES
[container_id]   ubuntu   "sleep 10"   About 5 minutes ago   Up 5 seconds            ...

Da der ursprüngliche Befehl für diesen Container sleep 10 war, wird der Container 10 Sekunden laufen und sich dann erneut stoppen. Nach einigen Sekunden führen Sie erneut docker ps -a aus, um seinen Status zu sehen.

docker ps -a

Der ubuntu-Container sollte nun wieder im Zustand Exited sein.

CONTAINER ID   IMAGE    COMMAND       CREATED          STATUS                       PORTS    NAMES
[container_id]   ubuntu   "sleep 10"   About 5 minutes ago   Exited (0) 5 seconds ago              ...
...

Das Starten eines gestoppten Containers ist nützlich, wenn Sie die Arbeit oder den Zustand einer vorherigen Container-Instanz fortsetzen möchten, ohne einen neuen Container zu erstellen.

Container starten und dessen Ausgabe anzeigen

In den vorherigen Schritten haben wir Container erstellt und gestartet. Wenn wir docker run oder docker start im Detached-Modus (-d) verwendet haben, lief der Container im Hintergrund. Manchmal möchten Sie die Ausgabe eines Containers während des Betriebs sehen. In diesem Schritt lernen Sie, wie Sie einen Container starten und sich dessen Standardausgabe- und Fehlerströme anzeigen lassen.

Zuerst erstellen wir einen neuen Container, der fünf Sekunden lang jede Sekunde eine Nachricht ausgibt. Wir verwenden wieder das ubuntu-Image.

docker run -d ubuntu /bin/bash -c 'for i in {1..5}; do echo "Hello from container $i"; sleep 1; done'

Dieser Befehl erstellt und startet einen Container im Detached-Modus (-d). Der im Container ausgeführte Befehl ist ein Bash-Skript, das fünfmal durchläuft, in jeder Iteration eine Nachricht ausgibt und eine Sekunde wartet. Notieren Sie die ausgegebene Container-ID.

[container_id]

Nun verbinden wir uns mit diesem laufenden Container, um dessen Ausgabe zu sehen. Verwenden Sie den Befehl docker attach gefolgt von der Container-ID. Ersetzen Sie [container_id] durch die tatsächliche ID Ihres ubuntu-Containers.

docker attach [container_id]

Sie sollten die Ausgabe des Containers in Ihrem Terminal sehen:

Hello from container 1
Hello from container 2
Hello from container 3
Hello from container 4
Hello from container 5

Nach Abschluss der Schleife stoppt der Container und Sie kehren zu Ihrer Terminal-Eingabeaufforderung zurück.

Wenn Sie versuchen, sich mit einem bereits gestoppten Container zu verbinden, wird der docker attach-Befehl sofort beendet.

Überprüfen wir, ob der Container gestoppt wurde, indem wir alle Container auflisten:

docker ps -a

Sie sollten den Container mit dem Befehl /bin/bash -c 'for i in {1..5}; do echo "Hello from container $i"; sleep 1; done' im Zustand Exited sehen.

CONTAINER ID   IMAGE    COMMAND                  CREATED         STATUS                      PORTS    NAMES
[container_id]   ubuntu   "/bin/bash -c 'for i…"   About a minute ago   Exited (0) 5 seconds ago             ...
...

Das Verbinden mit einem Container ist nützlich, um die Ausgabe eines länger laufenden Prozesses zu überwachen oder für Debugging-Zwecke.

Container interaktiv starten

In den vorherigen Schritten haben wir Container ausgeführt, die einen Befehl ausführten und dann beendet wurden oder im Hintergrund liefen. Oft möchten Sie jedoch mit einem Container interagieren, ähnlich wie mit einer virtuellen Maschine oder einem Remote-Server. In diesem Schritt lernen Sie, wie Sie einen Container interaktiv starten und eine Shell-Eingabeaufforderung darin erhalten.

Um einen Container interaktiv zu starten, verwenden wir den Befehl docker run mit den Flags -i und -t:

  • Das -i-Flag hält die Standardeingabe (STDIN) offen, auch wenn sie nicht verbunden ist. Dies ist für interaktive Prozesse notwendig.
  • Das -t-Flag weist ein pseudo-TTY zu, das für eine Shell-Eingabeaufforderung erforderlich ist.

Wir starten einen ubuntu-Container und führen den Befehl /bin/bash aus, um eine Bash-Shell innerhalb des Containers zu erhalten:

docker run -it ubuntu /bin/bash

Nach Ausführung dieses Befehls sehen Sie eine Shell-Eingabeaufforderung wie diese:

root@[container_id]:/#

Dies zeigt an, dass Sie sich nun als root-Benutzer innerhalb des laufenden ubuntu-Containers befinden. Sie können Standard-Linux-Befehle innerhalb dieses Containers ausführen. Überprüfen wir beispielsweise die Betriebssystemversion:

cat /etc/os-release

Sie sollten eine ähnliche Ausgabe sehen, die bestätigt, dass Sie sich in einem Ubuntu-Container befinden:

NAME="Ubuntu"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 22.04.3 LTS"
VERSION_ID="22.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=jammy
UBUNTU_CODENAME=jammy

Sie können auch andere Befehle ausprobieren, wie das Auflisten von Dateien im aktuellen Verzeichnis:

ls

Sie sehen die Standardinhalte des Root-Verzeichnisses eines Ubuntu-Systems.

Um den Container zu verlassen und zu Ihrem Host-Terminal zurückzukehren, geben Sie exit an der Shell-Eingabeaufforderung des Containers ein:

exit

Wenn Sie die Shell verlassen, wird der Container gestoppt, da der Hauptprozess (/bin/bash) beendet wurde.

Überprüfen wir, ob der Container gestoppt wurde, indem wir alle Container auflisten:

docker ps -a

Sie sollten den Container mit dem Befehl /bin/bash im Zustand Exited sehen:

CONTAINER ID   IMAGE    COMMAND       CREATED         STATUS                      PORTS    NAMES
[container_id]   ubuntu   "/bin/bash"   About a minute ago   Exited (0) 5 seconds ago             ...
...

Das interaktive Ausführen von Containern ist essenziell für das Erkunden von Container-Images, das Debuggen von Anwendungen in Containern und die Durchführung administrativer Aufgaben.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie Docker-Container mit den Befehlen docker run und docker stop erstellen und stoppen. Sie haben das Herunterladen von Images mit docker pull geübt und den Container-Status mit docker ps -a überprüft. Außerdem haben Sie einen Container erstellt, der sofort beendet wurde (hello-world), und einen, der für eine bestimmte Zeit lief (ubuntu mit sleep).

Anschließend haben Sie verschiedene Möglichkeiten zum Neustart gestoppter Container mit dem Befehl docker start erkundet. Sie haben gelernt, wie Sie einen Container einfach starten, wie Sie ihn starten und sich seine Ausgabe mit dem -a-Flag anzeigen lassen, sowie wie Sie einen Container interaktiv mit dem -i-Flag starten, um Befehle innerhalb des laufenden Containers auszuführen.