Starten Sie einen Docker-Container neu

David Mbochi Njonge 20 Juni 2023
  1. Ziehen Sie ein Nginx-Image aus dem Docker-Hub
  2. Führen Sie einen Container aus dem Image aus
  3. Starten Sie einen laufenden Container neu
  4. Starten Sie einen angehaltenen Container neu
  5. Docker-Container wird sofort beendet
  6. Abschluss
Starten Sie einen Docker-Container neu

Wenn ein Container, der zuvor im Hintergrund ausgeführt wurde, gestoppt wird, stellt Docker einige Befehle bereit, mit denen wir den Container neu starten können.

In diesem Tutorial erfahren wir, wie Sie einen Docker-Container mit einem im Hintergrund laufenden Nginx-Server neu starten. Wir werden auch erfahren, wie einige Befehle zum sofortigen Beenden eines Containers führen.

Ziehen Sie ein Nginx-Image aus dem Docker-Hub

Zunächst müssen wir ein Nginx-Image aus dem Docker-Hub ziehen, um Images davon auszuführen. Sie können Ihr benutzerdefiniertes Image jedoch mit Dockerfile erstellen.

Öffnen Sie das Terminalfenster auf Ihrem Computer und verwenden Sie den folgenden Befehl, um das Bild zu ziehen.

~$ docker pull nginx:alpine

Führen Sie einen Container aus dem Image aus

In diesem Abschnitt führen wir einen Container mit einem Nginx-Server im Hintergrund aus. Verwenden Sie den folgenden Befehl, um einen Container mit dem Namen web-app auszuführen.

~$ docker run --name web-app -d -p 8000:80 nginx:alpine

In diesem Befehl haben wir das Flag --name verwendet, um einen Namen für den Container zu erstellen. Zusätzlich haben wir auch das Flag -d verwendet, das es uns erlaubt, einen Container im Hintergrund laufen zu lassen.

Zuletzt haben wir das Flag -p hinzugefügt, um den Port des Containers auf dem Host zu veröffentlichen. Sie können den folgenden Befehl verwenden, um zu überprüfen, ob der Container betriebsbereit ist.

~$ docker ps

Ausgang:

CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                  NAMES
c18fa4102fb2   nginx:alpine   "/docker-entrypoint.…"   5 seconds ago   Up 3 seconds   0.0.0.0:8000->80/tcp   web-app

Starten Sie einen laufenden Container neu

Es gibt zwei Ansätze, die wir verwenden können, um einen Container neu zu starten. Der erste Ansatz verwendet den Befehl docker start, während der zweite Ansatz den Befehl docker restart verwendet.

Der Befehl docker start wird verwendet, um einen angehaltenen Container zu starten, und der Befehl docker restart wird verwendet, um einen laufenden Container neu zu starten.

Da unser Container bereits läuft, verwenden Sie den folgenden Befehl, um den Container web-app neu zu starten.

~$ docker restart web-app

Verwenden Sie den folgenden Befehl, um zu überprüfen, ob der Container betriebsbereit ist und ausgeführt wird, nachdem Sie den Container neu gestartet haben.

~$ docker ps

Ausgang:

CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS        PORTS                  NAMES
c18fa4102fb2   nginx:alpine   "/docker-entrypoint.…"   20 minutes ago   Up 1 second   0.0.0.0:8000->80/tcp   web-app

Starten Sie einen angehaltenen Container neu

Dieser Ansatz ist derselbe wie der vorherige. Wir müssen den Befehl docker stop verwenden, um den laufenden Container zu stoppen.

Sobald der Container gestoppt wurde, verwenden Sie den Befehl docker start, um den gestoppten Container neu zu starten. Führen Sie die folgenden Befehle aus, um zu sehen, wie dies in der Praxis funktioniert.

~$ docker stop web-app

Ausgang:

web-app

Wenn Sie den Befehl docker ps -a ausführen, um alle laufenden und angehaltenen Container aufzulisten, können Sie sehen, dass der Status des web-app-Containers beendet ist, was bedeutet, dass der Container angehalten wurde.

~$ docker ps -a

Ausgang:

CONTAINER ID   IMAGE            COMMAND                  CREATED          STATUS                          PORTS      NAMES
c18fa4102fb2   nginx:alpine     "/docker-entrypoint.…"   32 minutes ago   Exited (0) About a minute ago              web-app

Verwenden Sie schließlich den folgenden Befehl, um den Container neu zu starten.

~$ docker start web-app && docker ps

Ausgang:

web-app
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                  PORTS                  NAMES
c18fa4102fb2   nginx:alpine   "/docker-entrypoint.…"   37 minutes ago   Up Less than a second   0.0.0.0:8000->80/tcp   web-app

Docker-Container wird sofort beendet

Der Container im vorherigen Abschnitt wurde nicht beendet, da auf dem Container ein Nginx-Prozess im Hintergrund ausgeführt wurde.

Es gibt Fälle, in denen der Docker-Container sofort beendet wird, wenn er die Ausführung seines Prozesses beendet hat. Führen Sie zur Veranschaulichung den folgenden Befehl aus, um einen neuen Container mit dem Namen temp-web-app zu erstellen.

~$ docker run -w /com/web-app/ --name temp-web-app -p 8080:80  nginx:alpine pwd

Ausgang:

/com/web-app

Beachten Sie, dass dieser Befehl sofort nach dem Drucken des Arbeitsverzeichnisses /com/web-app beendet wird. Dies liegt daran, dass der Container beendet wird, sobald sein Hauptprozess den Befehl pwd ausführt.

Daher sollten Befehle wie der obige zu Testzwecken und nicht zum Ausführen von Containern mit einem Server, einer Datenbank oder einem Anwendungsprozess verwendet werden. Verwenden Sie den folgenden Befehl, um den Status des Containers temp-web-app zu überprüfen.

CONTAINER ID   IMAGE            COMMAND                  CREATED             STATUS                      PORTS                  NAMES
fb051673c15f   nginx:alpine     "/docker-entrypoint.…"   14 minutes ago      Exited (0) 3 minutes ago                           temp-web-app

Jeder Versuch, den Container neu zu starten, funktioniert nicht, da der Standardbefehl während des ersten Starts festgelegt wird. Das bedeutet, dass der Container immer beendet wird, nachdem der Befehl pwd ausgeführt wurde, wo der Hauptprozess des Containers beendet wird.

Abschluss

Wir haben in diesem Tutorial gelernt, wie man einen Container im Docker neu startet. Wir haben behandelt, wie man einen laufenden und stoppenden Container startet.

Wir haben den Zweck gelernt, Container auszuführen, die sofort beendet werden, ohne dass Prozesse im Hintergrund ausgeführt werden.

David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub

Verwandter Artikel - Docker Container