Starten Sie einen Docker-Container neu
- Ziehen Sie ein Nginx-Image aus dem Docker-Hub
- Führen Sie einen Container aus dem Image aus
- Starten Sie einen laufenden Container neu
- Starten Sie einen angehaltenen Container neu
- Docker-Container wird sofort beendet
- Abschluss
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 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 GitHubVerwandter Artikel - Docker Container
- Der Unterschied zwischen Docker-Container und Docker-Image
- Erstellen Sie einen Container in einer Docker-Compose-Datei neu
- Führen Sie Container mit Docker kontinuierlich im Hintergrund aus
- Geben Sie einen laufenden Docker-Container mit einem neuen Pseudo-TTY ein
- Listen Sie nur die angehaltenen Container in Docker auf
- Löschen Sie Container dauerhaft in Docker
