In die Shell eines Docker-Containers einsteigen
-
Verwenden Sie
docker exec
, um in die Shell eines Docker-Containers zu gelangen -
Verwenden Sie
docker container attach
, um in die Shell eines Docker-Containers zu gelangen - Verwenden Sie Secure Shell (SSH), um in die Shell eines Docker-Containers zu gelangen
Dieses Tutorial zeigt, wie Sie auf verschiedene Arten in die Container-Shell von Docker gelangen.
Verwenden Sie docker exec
, um in die Shell eines Docker-Containers zu gelangen
Wir müssen einen Container haben, der läuft, um diesen Befehl zu verwenden. Wir können den Status von Containern in unserem System mit dem folgenden Befehl überprüfen.
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
38086474cb6c debian "bash" 2 days ago Exited (0) 2 days ago epic_jackson
1c955bac1a84 ubuntu "bash" 2 days ago Exited (0) 2 days ago musing_morse
1296f9b9d330 nginx "/docker-entrypoint.…" 2 days ago Exited (255) 2 days ago 80/tcp distracted_napier
Wenn wir keinen Container laufen haben, können wir einfach einen erstellen. Wir werden das Basis-Image rabbitmq
verwenden, um einen Container einzurichten.
Wir beginnen damit, das Basis-Image mit dem Befehl docker pull
aus der Registrierung zu ziehen, bevor wir einen Container erstellen, wie unten gezeigt.
$ docker run -d rabbitmq
Ausgabe:
Dcad9f270643802092ab525796897c357026767863dade831e8c7d7d82c45712
Jetzt sollten wir einen laufenden Container haben. Das können wir wiederum mit dem Befehl docker ps
feststellen.
$ docker ps -a
Ausgabe:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dcad9f270643 rabbitmq "docker-entrypoint.s…" About a minute ago Up 57 seconds 4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp inspiring_moore
Wir verwenden den Befehl docker exec
zusammen mit dem Tag -it
, um in den Container zu gelangen, mit den Dateien zu interagieren oder ein Debugging durchzuführen.
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.
Schließlich öffnet der Befehl sh
eine einfache Shell-Eingabeaufforderung, um unsere Befehle innerhalb des Containers auszuführen.
isaactonyloi@DESKTOP-HV44HT6:~$ docker exec -it dcad9f270643 sh
#
Nachdem wir den Docker-Container betreten haben, können wir verschiedene Befehle aus dem Container heraus ausführen. Geben Sie den Befehl exit
ein und drücken Sie in diesem Modus die Eingabetaste, um zum Hauptterminal zurückzukehren.
Verwenden Sie docker container attach
, um in die Shell eines Docker-Containers zu gelangen
Wir können uns auch mit dem Befehl docker container attach
mit einem laufenden Container verbinden. Dadurch können wir die Ausgabe-, Eingabe- und Fehlerströme des Terminals 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. Wie bereits erwähnt, benötigen wir einen laufenden Container, um unsere Ausgabe-, Eingabe- und Fehlerströme anzuhängen.
Zu diesem Zweck verwenden wir docker ps
wie unten gezeigt. Wir verwenden immer noch den rabbitmq
-Container aus dem vorherigen Abschnitt.
$ docker ps -a
Ausgabe:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dcad9f270643 rabbitmq "docker-entrypoint.s…" 39 minutes ago Up 38 minutes 4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp inspiring_moore
Falls der Docker-Container gestoppt wurde, müssen wir ihn in diesem Fall zuerst mit dem Befehl docker start
starten, wie wir es hier getan haben.
$ docker start dcad9f270643
dcad9f270643
Wenn nun der Docker-Container nicht wie erwartet funktioniert, können wir den docker container attach
ausführen, um zu sehen, was im Container passiert.
$ docker container attach dcad9f270643
Ausgabe:
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0> Server startup complete; 3 plugins started.
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0> * rabbitmq_prometheus
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0> * rabbitmq_web_dispatch
2022-02-21 16:14:51.119742+00:00 [info] <0.466.0> * rabbitmq_management_agent
Verwenden Sie Secure Shell (SSH), um in die Shell eines Docker-Containers zu gelangen
Schließlich können wir auch die Secure Shell, allgemein als SSH abgekürzt, verwenden, um Befehle innerhalb eines Containers auszuführen. Dies ist jedoch die am wenigsten empfohlene Methode, da sie das Basisimage aufbläht und Konfigurationsprobleme auftreten können.
Darüber hinaus stellt diese Methode ein Sicherheitsproblem dar, da wir die Schlüssel selbst verwalten müssen. Wir müssen auch berücksichtigen, dass einige Bilder diese Methode möglicherweise nicht von sich aus unterstützen und daher möglicherweise eine weitere Konfiguration erfordern.
Wenn wir diese Methode jedoch verwenden müssen, müssen wir diese Schritte ausführen.
-
Wir müssen zuerst den SSH-Dienst installieren und aktivieren.
-
Dann müssen wir die IP-Adresse des Containers abrufen.
-
Zuletzt stellen wir mit der abgerufenen IP-Adresse eine SSH-Verbindung zum Container her.
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