Starten Sie das Bash-Terminal im neuen Docker-Container

Isaac Tony 23 August 2022
  1. Verwendung von die interaktive Bash-Shell
  2. Verwendung von den Befehl docker exec
  3. Verwendung von den Befehl docker attach
Starten Sie das Bash-Terminal im neuen Docker-Container

Docker-Container sind die Standardeinheit zum Packen aller Abhängigkeiten unserer Anwendungen, sodass wir sie problemlos in jeder Umgebung ausführen können. Container sind in letzter Zeit sehr beliebt geworden, und die meisten Entwickler verlassen sich jetzt stark auf Container, um ihre Anwendungen und Abhängigkeiten zu verwalten.

Docker bietet uns mehrere Möglichkeiten, auf eine Shell-Instanz zuzugreifen, indem wir ein Bash-Terminal in einem Docker-Container starten. Dies ist besonders nützlich, wenn Sie einige Befehle im Docker-Container ausführen.

Außerdem kann dies auch aus Debugging-Gründen sein, oder vielleicht möchten Sie überprüfen, ob alles richtig konfiguriert ist. In diesem Artikel werden verschiedene Methoden untersucht, die wir verwenden können, um Container auszuführen und Container, die nicht ausgeführt werden.

Verwendung von die interaktive Bash-Shell

Bash ist ein bei Linux-Systemen üblicher Befehlsprozessor, der es Benutzern ermöglicht, Befehle einzugeben, die Aktionen auslösen. Wenn Sie mit Unix-basierten Systemen oder der WSL interagiert haben, können Sie über Bash mit verschiedenen Befehlen interagieren.

Ebenso können wir auch innerhalb eines Docker-Containers direkt auf das Linux-Terminal zugreifen und Befehle ausführen, wie wir es mit der normalen Linux-Bash tun würden. Ein Vorteil dieser Methode ist, dass wir dies mit einem nicht laufenden Container tun können, im Gegensatz zu anderen Befehlen wie dem Befehl docker exec.

Wie unten gezeigt, verwenden wir das offizielle rabbitmq-Image aus der Docker-Registrierung, um einen Docker-Container zu erstellen und direkt auf die Bash innerhalb des Containers zuzugreifen. Sie können dies mit jedem anderen Befehl tun; Sie möchten sicherstellen, dass Sie das Bild im Voraus haben.

docker pull rabbitmq
docker images

Nachdem wir nun die Bilder haben, können wir den Docker-Container interaktiv erstellen. Das bedeutet, dass wir Befehle innerhalb des Docker-Containers ausführen können, während er noch läuft, wie unten gezeigt.

$ docker run -it rabbitmq bash

Ausgabe:

root@f418a3286aae:/#

Wie Sie sehen können, befinden wir uns jetzt im Docker-Container, und wir haben es erfolgreich geschafft, die Bash im neuen Container auszuführen. Jetzt können wir unsere Befehle ausführen, als ob wir mit dem echten Terminal arbeiten würden.

Beispielsweise können wir die Dateien und Verzeichnisse in diesem Container auflisten, wie unten gezeigt.

root@f418a3286aae:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  plugins  proc  root  run  sbin  srv  sys  tmp  usr  var
root@f418a3286aae:/#

Verwendung von den Befehl docker exec

Alternativ können wir auch den Befehl docker exec verwenden, um die Bash in einem neuen Docker-Container auszuführen. Im Gegensatz zur früheren Methode erfordert dieser Befehl jedoch, dass der Container bereits ausgeführt wird. Andernfalls funktioniert der Befehl nicht.

Verwenden Sie den Befehl docker ps -a, um zu bestätigen, dass unser Container ausgeführt wird. Wenn der Container, den Sie verwenden möchten, nicht ausgeführt wird, können Sie ihn mit dem Befehl docker start gefolgt von der Container-ID oder dem Namen starten.

docker ps

Wir werden den Befehl docker exec zusammen mit dem Tag -it verwenden. Der Befehl exec ermöglicht es uns, einen Befehl in den laufenden Container auszuführen, während das Tag -it es uns ermöglicht, den Container interaktiv zu öffnen.

Wir können das wie unten gezeigt ausführen.

$ docker exec -it f418a3286aae bash

Ausgabe:

root@f418a3286aae:/# ls
bin  boot  dev  etc  home  isaac  lib  lib32  lib64  libx32  media  mnt  opt  plugins  proc  root  run  sbin  srv  sys tmp  tonyloi  usr  var

Nachdem wir Bash erfolgreich in diesem Docker-Container gestartet haben, können wir verschiedene Befehle aus dem Container heraus ausführen. Wir können alternativ sh für Container verwenden, die keine Bash haben.

Dies ist auch ein Befehl, der eine einfache Shell-Eingabeaufforderung öffnet, an der wir unsere Befehle innerhalb des Containers ausführen können.

$ docker exec -it f418a3286aae sh

Ausgabe:

# ls
bin  boot  dev  etc  home  isaac  isaactonyloi  lib  lib32  lib64  libx32  media  mnt  opt  plugins  proc  root  run  sbin  srv  sys  tmp  tonyloi  usr  var

Verwendung von den Befehl docker attach

Wir können Bash auch in einem laufenden Docker-Container mit dem Befehl docker attach starten. Auf diese Weise können wir die lokalen Standard-Eingabe-, Ausgabe- und Fehlerströme an einen laufenden Container anhängen, indem wir die ID des Containers verwenden.

Wir können dann verschiedene Befehle ausführen, Eingaben akzeptieren und den angegebenen Container debuggen. Wir brauchen einen laufenden Container, um unsere Ausgabe-, Eingabe- und Fehlerströme anzuhängen.

Wir können dies mit dem Containernamen oder der ID wie unten gezeigt implementieren.

Code:

$ docker container attach f418a3286aae

Ausgabe:

root@f418a3286aae:/# ls
bin  boot  dev  etc  home  isaac  isaactonyloi  lib  lib32  lib64  libx32  media  mnt  opt  plugins  proc  root  run  sbin  srv  sys  tmp  tonyloi  usr  var
root@f418a3286aae:/#
Autor: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn