In die Shell eines Docker-Containers einsteigen

Isaac Tony 23 August 2022
  1. Verwenden Sie docker exec, um in die Shell eines Docker-Containers zu gelangen
  2. Verwenden Sie docker container attach, um in die Shell eines Docker-Containers zu gelangen
  3. Verwenden Sie Secure Shell (SSH), um in die Shell eines Docker-Containers zu gelangen
In die Shell eines Docker-Containers einsteigen

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.
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