HOWTO · Docker
So starten Sie das Bash-Terminal in einem neuen Docker-Container
Dieses Tutorial zeigt, wie Sie das Bash-Terminal in neuen Docker-Containern starten.
Auf dieser Seite
Um Bash in einem Docker-Container zu öffnen, wählen Sie den Befehl nach dem Zustand des Containers. Verwenden Sie docker run -it IMAGE bash, um einen neuen Container mit einer interaktiven Bash-Sitzung zu starten. Verwenden Sie docker exec -it CONTAINER bash, um eine separate Bash-Sitzung in einem bereits laufenden Container zu starten. Verwenden Sie docker attach CONTAINER nur, wenn Sie Ihr Terminal mit dem Hauptprozess des Containers verbinden möchten; dadurch wird keine weitere Shell gestartet.
Ersetzen Sie IMAGE durch ein Image, das Docker zur Verfügung steht und das Bash enthält. Ersetzen Sie CONTAINER durch den Namen oder die ID eines laufenden Containers. Die folgenden Befehle sind Syntaxvorlagen: Ihre Platzhalter müssen ersetzt werden, und sie werden nicht als ausgeführte Ausgabe dargestellt.
Die interaktive Bash-Shell verwenden
Verwenden Sie docker run -it IMAGE bash, wenn Sie einen neuen Container und darin eine interaktive Bash-Eingabeaufforderung möchten. Die Option -i hält die Standardeingabe offen, und -t weist ein Terminal zu, wodurch sich die Sitzung wie eine interaktive Befehlszeile verhält. bash ist der Befehl, den Docker im neuen Container startet.
Ersetzen Sie beispielsweise in docker run -it IMAGE bash einen Image-Namen für IMAGE. Das Image muss Bash enthalten; ein minimales Image stellt möglicherweise nur sh oder eine andere Shell bereit. Dieser Befehl erstellt und startet einen Container und unterscheidet sich daher vom Öffnen einer Shell in einem bereits vorhandenen Container. Wenn Sie einen gestoppten Container wiederverwenden möchten, starten Sie ihn zuerst und verwenden Sie dann docker exec, sobald er läuft.
Den Befehl docker exec verwenden
Verwenden Sie docker exec -it CONTAINER bash, um Bash als neuen Prozess in einem bereits laufenden Container zu starten. docker exec startet keinen gestoppten Container. Um die Namen und IDs laufender Container zu finden, verwenden Sie docker ps; verwenden Sie docker ps -a, wenn Sie auch gestoppte Container sehen müssen. Starten Sie den gewünschten gestoppten Container mit docker start CONTAINER und führen Sie dann den Befehl docker exec aus.
Wenn Bash im Image nicht installiert ist, versuchen Sie docker exec -it CONTAINER sh, wenn das Image sh bereitstellt. Der Shell-Befehl muss im Container vorhanden sein. Beide docker exec-Formen erzeugen einen separaten interaktiven Prozess und eignen sich daher zur Inspektion oder Fehlersuche, während der Hauptprozess des Containers weiterläuft.
Den Befehl docker attach verwenden
Verwenden Sie docker attach CONTAINER, um die Eingabe- und Ausgabeströme Ihres Terminals mit dem Hauptprozess eines laufenden Containers zu verbinden. Das ist nützlich, wenn dieser Prozess bereits die benötigte interaktive Sitzung bereitstellt. Wenn der Container beispielsweise mit einer Shell als Hauptprozess gestartet wurde, verbindet attach Sie erneut mit diesem Prozess.
Attach startet weder Bash noch einen anderen neuen Befehl. Wenn der Hauptprozess des Containers eine Anwendung ist, verbindet attach Sie mit den Strömen dieser Anwendung; Sie erhalten keine separate Shell-Eingabeaufforderung. Wählen Sie docker exec -it CONTAINER bash (oder sh, falls verfügbar), wenn Sie eine Shell neben dem Hauptprozess starten müssen. Kurz gesagt: docker run startet einen neuen Container, docker exec startet einen Befehl in einem laufenden Container, und docker attach verbindet Sie mit dem vorhandenen Hauptprozess.