Verwendung des docker container attach Befehls zur Interaktion mit laufenden Containern

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie den Befehl docker container attach verwenden, um mit laufenden Containern zu interagieren. Sie werden Container im Detached-Modus starten, sich an diese anhängen, um deren Ausgabe zu beobachten, und sich mit der Standard-Tastenkombination wieder abkoppeln.

Außerdem werden Sie das Anhängen an Container mit aktiviertem TTY (Terminal) untersuchen und lernen, wie Sie die Standard-Abkopplungs-Tastenkombination überschreiben können, um mehr Flexibilität bei der Interaktion mit Ihren Docker-Containern zu erreichen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/attach("Attach to Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555103{{"Verwendung des docker container attach Befehls zur Interaktion mit laufenden Containern"}} docker/ps -.-> lab-555103{{"Verwendung des docker container attach Befehls zur Interaktion mit laufenden Containern"}} docker/attach -.-> lab-555103{{"Verwendung des docker container attach Befehls zur Interaktion mit laufenden Containern"}} docker/pull -.-> lab-555103{{"Verwendung des docker container attach Befehls zur Interaktion mit laufenden Containern"}} end

Starten eines abgekoppelten Containers mit einem einfachen Befehl

In diesem Schritt lernen Sie, wie Sie einen Docker-Container im Detached-Modus starten. Wenn ein Container im Detached-Modus läuft, wird er im Hintergrund ausgeführt und die Docker CLI verbindet sich nicht mit den Standard-Ein-/Ausgabe- oder Fehlerströmen des Containers. Dies ist nützlich für langlebige Dienste oder Anwendungen.

Wir verwenden das ubuntu-Image, um einen einfachen Befehl auszuführen, der eine Nachricht ausgibt und dann beendet. Zuerst laden wir das ubuntu-Image, um sicherzustellen, dass es lokal verfügbar ist.

docker pull ubuntu

Nun starten wir einen Container im Detached-Modus mit dem docker run-Befehl und dem -d-Flag. Wir führen einen einfachen echo-Befehl aus, der "Hello from detached container!" ausgibt und dann beendet.

docker run -d ubuntu echo "Hello from detached container!"

Nach Ausführung des Befehls gibt Docker die Container-ID aus. Dies zeigt an, dass der Container im Detached-Modus gestartet wurde. Sie können überprüfen, ob der Container läuft (oder seine Aufgabe abgeschlossen hat) mit dem Befehl docker ps -a, der alle Container anzeigt, einschließlich der beendeten.

docker ps -a

Sie sollten einen Eintrag für den gerade gestarteten Container sehen. Die Spalte STATUS zeigt an, ob der Container noch läuft oder beendet wurde. Da unser Befehl sehr kurz ist, wird der Container wahrscheinlich bereits beendet sein, wenn Sie docker ps -a ausführen.

Anhängen an einen laufenden Container und Beobachten seiner Ausgabe

Im vorherigen Schritt haben wir einen Container im Detached-Modus gestartet. Obwohl der Container einen einfachen Befehl ausführte und wahrscheinlich schnell beendet wurde, können wir uns dennoch anhängen, um seine Ausgabe zu sehen. Der Befehl docker attach ermöglicht es Ihnen, sich mit den Standard-Ein-/Ausgabe- und Fehlerströmen eines laufenden oder beendeten Containers zu verbinden.

Zuerst holen wir uns die ID des Containers aus dem vorherigen Schritt. Verwenden Sie den Befehl docker ps -a und suchen Sie nach dem Container, der den echo-Befehl ausführte. Kopieren Sie die Container-ID.

docker ps -a

Verwenden Sie nun den Befehl docker attach gefolgt von der Container-ID, um sich an den Container anzuhängen.

docker attach <container_id>

Ersetzen Sie <container_id> mit der tatsächlichen ID Ihres Containers. Da der Container einen einfachen echo-Befehl ausführte und beendet wurde, sehen Sie möglicherweise keine sofortige Ausgabe oder die Ausgabe "Hello from detached container!", falls diese noch gepuffert ist. Der attach-Befehl verbindet Sie mit den Strömen des Containers. Da der Container seine Aufgabe bereits abgeschlossen hat, wird der attach-Befehl wahrscheinlich sofort nach der Verbindung beendet.

Um das Anhängen an einen länger laufenden Container zu demonstrieren, starten wir einen neuen Detached-Container, der einen Befehl ausführt, der ihn für einige Sekunden aktiv hält. Wir verwenden wieder das ubuntu-Image und führen sleep 10 aus.

docker run -d ubuntu sleep 10

Holen Sie sich die ID dieses neuen Containers mit docker ps. Diesmal sollte der Container im Status Up sein.

docker ps

Hängen Sie sich nun mit seiner ID an diesen laufenden Container an.

docker attach <new_container_id>

Ersetzen Sie <new_container_id> mit der ID des Containers, der sleep 10 ausführt. Sie werden mit den Standardströmen des Containers verbunden. Da der sleep-Befehl keine Ausgabe erzeugt, werden Sie nichts sehen. Das Terminal scheint zu warten. Der Container läuft für 10 Sekunden und beendet sich dann. Wenn der Container beendet wird, wird auch der attach-Befehl beendet und Sie kehren zu Ihrer Terminal-Eingabeaufforderung zurück.

Vom Container mit der Standard-Tastenkombination abkoppeln

Im vorherigen Schritt haben Sie sich an einen laufenden Container angehängt. Wenn Sie an einen Container angehängt sind, sind Sie mit seinen Standard-Ein-/Ausgabe- und Fehlerströmen verbunden. Um sich vom Container zu trennen, ohne ihn zu stoppen, können Sie eine spezielle Tastenkombination verwenden. Standardmäßig ist diese Kombination STRG+p gefolgt von STRG+q.

Lassen Sie uns einen neuen abgekoppelten Container starten, der für einen längeren Zeitraum läuft, damit Sie Zeit haben, das Abkoppeln zu üben. Wir verwenden das ubuntu-Image und führen sleep 60 aus.

docker run -d ubuntu sleep 60

Holen Sie sich die ID dieses neuen Containers mit docker ps.

docker ps

Hängen Sie sich nun mit seiner ID an diesen laufenden Container an.

docker attach <container_id>

Ersetzen Sie <container_id> mit der ID des Containers, der sleep 60 ausführt. Sie sind nun mit dem Container verbunden. Um sich vom Container zu trennen und zur Terminal-Eingabeaufforderung zurückzukehren, ohne den Container zu stoppen, drücken Sie folgende Tastenkombination:

  1. Halten Sie die STRG-Taste gedrückt und drücken Sie dann die p-Taste. Lassen Sie beide Tasten los.
  2. Halten Sie die STRG-Taste gedrückt und drücken Sie dann die q-Taste. Lassen Sie beide Tasten los.

Nachdem Sie STRG+p gefolgt von STRG+q gedrückt haben, sollten Sie zur Terminal-Eingabeaufforderung zurückkehren. Der Container läuft weiter im Hintergrund. Sie können mit docker ps überprüfen, ob der Container noch läuft.

docker ps

Sie sollten den Container mit dem Befehl sleep 60 und dem Status Up in der Liste sehen.

Einen weiteren abgekoppelten Container mit aktiviertem TTY starten

In diesem Schritt starten wir einen weiteren abgekoppelten Container, diesmal jedoch mit aktiviertem pseudo-TTY (Terminal). Die Aktivierung eines TTY ist oft notwendig, wenn Sie mit der Shell eines Containers interagieren oder Befehle ausführen möchten, die ein Terminal erwarten.

Wir verwenden den docker run-Befehl mit dem -d-Flag für den Detached-Modus und dem -t-Flag zur Zuweisung eines pseudo-TTY. Wir führen einen einfachen Befehl aus, der den Container am Laufen hält, wie z.B. sleep 60.

docker run -d -t ubuntu sleep 60

Das -t-Flag weist ein pseudo-TTY zu - ein virtuelles Terminal, das die Interaktion mit dem Container ermöglicht, als wären Sie mit einem physischen Terminal verbunden. Obwohl der Container im Detached-Modus (-d) läuft, ist ein aktiviertes TTY wichtig für interaktive Prozesse oder wenn Sie später eine Terminalumgebung benötigen, um sich mit dem Container zu verbinden.

Nach Ausführung des Befehls gibt Docker erneut die Container-ID aus, was anzeigt, dass der Container im Detached-Modus mit TTY gestartet wurde. Sie können mit docker ps überprüfen, ob der Container läuft.

docker ps

Sie sollten den neuen Container mit dem Status Up in der Liste sehen. Notieren Sie sich die Container-ID, da Sie diese im nächsten Schritt benötigen, um sich mit diesem Container zu verbinden.

Mit TTY-fähigem Container verbinden und mit Standard-Tastenkombination abkoppeln

Im vorherigen Schritt haben wir einen abgekoppelten Container mit aktiviertem TTY gestartet. Nun werden wir uns mit diesem Container verbinden und das Abkoppeln mit der Standard-Tastenkombination (STRG+p gefolgt von STRG+q) üben. Die Verbindung mit einem Container mit TTY ermöglicht interaktive Sitzungen, selbst wenn der ursprüngliche Befehl keine erfordert.

Zuerst ermitteln Sie die ID des Containers aus dem vorherigen Schritt, der sleep 60 mit aktiviertem TTY ausführt.

docker ps

Suchen Sie die Container-ID für den ubuntu-Container, der sleep 60 ausführt.

Verbinden Sie sich nun mit diesem Container über den Befehl docker attach gefolgt von der Container-ID.

docker attach <container_id>

Ersetzen Sie <container_id> mit der tatsächlichen ID Ihres Containers. Sie sind nun mit den Standard-Streams des Containers verbunden, und dank des aktivierten TTY haben Sie eine terminalähnliche Schnittstelle. Obwohl der sleep-Befehl keine Interaktion erfordert, sind Sie mit dem virtuellen Terminal des Containers verbunden.

Um sich vom Container zu trennen, ohne ihn zu stoppen, verwenden Sie die Standard-Abkopplungssequenz:

  1. Halten Sie die STRG-Taste gedrückt und drücken Sie dann die p-Taste. Lassen Sie beide Tasten los.
  2. Halten Sie die STRG-Taste gedrückt und drücken Sie dann die q-Taste. Lassen Sie beide Tasten los.

Sie sollten zur Terminal-Eingabeaufforderung zurückkehren. Der Container läuft weiter im Hintergrund, bis der sleep 60-Befehl abgeschlossen ist. Sie können mit docker ps überprüfen, ob der Container noch läuft.

docker ps

Sie sollten den Container mit dem Befehl sleep 60 und dem Status Up in der Liste sehen.

Mit Container verbinden und Abkopplungs-Tastenkombination überschreiben

In diesem letzten Schritt lernen Sie, wie Sie die Standard-Abkopplungs-Tastenkombination beim Verbinden mit einem Container überschreiben können. Dies ist nützlich, wenn die Standardkombination mit anderen Anwendungen kollidiert oder wenn Sie eine andere Tastenkombination bevorzugen.

Wir verwenden den docker attach-Befehl mit dem --detach-keys-Flag, um eine alternative Tastenkombination festzulegen. Das Format für das --detach-keys-Flag ist sequence, wobei sequence eine durch Kommas getrennte Zeichenfolge von Tastenkombinationen darstellt. Beispielsweise würde ctrl-a,ctrl-d die Abkopplungssequenz auf STRG+a gefolgt von STRG+d setzen.

Zuerst starten wir einen neuen abgekoppelten Container mit aktiviertem TTY, der eine Weile läuft.

docker run -d -t ubuntu sleep 60

Ermitteln Sie die ID dieses neuen Containers mit docker ps.

docker ps

Verbinden Sie sich nun mit diesem Container, aber geben Sie diesmal eine andere Abkopplungs-Tastenkombination mit dem --detach-keys-Flag an. Wir verwenden ctrl-a,d als neue Sequenz. Das bedeutet, Sie drücken STRG+a gefolgt von d zum Abkoppeln.

docker attach --detach-keys="ctrl-a,d" <container_id>

Ersetzen Sie <container_id> mit der tatsächlichen ID Ihres Containers. Sie sind nun mit dem Container verbunden. Zum Abkoppeln mit der neuen Kombination:

  1. Halten Sie die STRG-Taste gedrückt und drücken Sie dann die a-Taste. Lassen Sie beide Tasten los.
  2. Drücken Sie die d-Taste.

Sie sollten zur Terminal-Eingabeaufforderung zurückkehren. Der Container läuft weiter im Hintergrund. Sie können mit docker ps überprüfen, ob der Container noch läuft.

docker ps

Sie sollten den Container mit dem Befehl sleep 60 und dem Status Up in der Liste sehen.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie einen Docker-Container im Detached-Modus mit dem Befehl docker run -d starten, wodurch Container im Hintergrund ausgeführt werden, ohne an das Terminal gebunden zu sein. Sie haben anschließend geübt, wie Sie mit dem docker attach-Befehl eine Verbindung zu den Standard-Streams eines laufenden oder beendeten Containers herstellen, um dessen Ausgabe zu beobachten.

Darüber hinaus haben Sie untersucht, wie Sie sich von einem verbundenen Container mit der Standard-Tastenkombination (STRG+p STRG+q) abkoppeln und wie sich das Verhalten von docker attach ändert, wenn der Container mit aktiviertem TTY (-t) gestartet wird. Abschließend haben Sie gelernt, wie Sie die Standard-Abkopplungssequenz beim Verbinden mit einem Container überschreiben können, was Ihnen mehr Flexibilität bei der Verwaltung Ihrer Container-Interaktionen bietet.