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