468 Stimmen

Richtige Art, sich von einem Container zu lösen, ohne ihn anzuhalten

In Docker 1.1.2 (latest), what's the correct way to detach from a container without stopping it?

So for example, if I try:

  • docker run -i -t foo /bin/bash or
  • docker attach foo (for already running container)

both of which get me to a terminal in the container, how do I exit the container's terminal without stopping it?

exit and CTR+C both stop the container.

33voto

Alexis LEGROS Punkte 509

Versuchen Sie STRG+P, STRG+Q, um den interaktiven Modus in den Daemon-Modus zu versetzen.

Wenn das nicht funktioniert und Sie sich über docker attach verbunden haben, können Sie sich abmelden, indem Sie den Vorgang docker attach beenden.

Besser ist es, den sig-proxy-Parameter zu verwenden, um das Senden von STRG+C an Ihren Container zu vermeiden:

docker attach --sig-proxy=false [Container-Name]

Dieselbe Option steht auch für den Befehl docker run zur Verfügung.

24voto

splintor Punkte 9409

Der Standardweg, um sich von einem interaktiven Container zu trennen, ist Strg+P Strg+Q, aber Sie können es überschreiben, wenn Sie einen neuen Container ausführen oder sich an ein vorhandenes Container anhängen, indem Sie den --detach-keys Flag verwenden.

19voto

Constantin Galbenu Punkte 15894

Sie können die --detach-keys-Option verwenden, wenn Sie docker attach ausführen, um die Standardsequenz STRG+P, STRG + Q (die nicht immer funktioniert) zu überschreiben.

Zum Beispiel, wenn Sie docker attach --detach-keys="strg-a" test ausführen und STRG+A drücken, verlassen Sie den Container, ohne ihn zu beenden.

Weitere Beispiele:

  • docker attach --detach-keys="strg-a,x" test - drücken Sie STRG+A und dann X, um zu beenden
  • docker attach --detach-keys="a,b,c" test - drücken Sie A, dann B, dann C zum Beenden

Auszug aus der offiziellen Dokumentation:

Sie können die Docker-Tastenfolge für das Trennen konfigurieren. Dies ist nützlich, wenn die Standard-Docker-Sequenz mit der Tastenfolge kollidiert, die Sie für andere Anwendungen verwenden. Es gibt zwei Möglichkeiten, Ihre eigene Trenn-Tastenfolge zu definieren: als individuelle Container-Überschreibung oder als Konfigurationseigenschaft in Ihrer gesamten Konfiguration.

Um die Sequenz für einen individuellen Container zu überschreiben, verwenden Sie die --detach-keys=""-Flagge mit dem docker attach-Befehl. Das Format der ist entweder ein Buchstabe [a-Z] oder das strg- in Kombination mit einem der folgenden:

  • a-z (ein einzelner Kleinbuchstabe)
  • @ (at Zeichen)
  • [ (linke Klammer)
  • \ (zwei Backslashes)
  • _ (Unterstrich)
  • ^ (Zirkumflex)

Diese a, strg-a, X oder strg-\\ Werte sind alle Beispiele für gültige Tastenfolgen. Um eine andere Konfigurationsstandard-Tastenfolge für alle Container zu konfigurieren, siehe Konfigurations-Abschnitt.

Hinweis: Dies funktioniert seit Docker-Version 1.10+ (zum Zeitpunkt dieser Antwort ist die aktuelle Version 18.03)

16voto

agupta231 Punkte 1161

Wenn Sie nur die Ausgabe des Prozesses sehen möchten, der innerhalb des Containers läuft, können Sie einfach docker container logs -f ausführen.

Der -f Flag sorgt dafür, dass die Ausgabe des Containers verfolgt und in Echtzeit aktualisiert wird. Sehr nützlich für Debugging oder Monitoring.

10voto

Vintage Coder Punkte 341

In einem Docker-Container muss mindestens ein Prozess ausgeführt werden, damit der Container das Docker-Image (ubuntu, httpd..etc, was auch immer es ist) im Hintergrund ohne Beenden ausführt

Zum Beispiel im Ubuntu-Docker-Image,

Um einen neuen Container im Abtrennungsmodus zu erstellen (der im Hintergrund mindestens einen Prozess ausführt),

docker run -d -i -t f63181f19b2f /bin/bash

es wird einen neuen Container für dieses Bild (Ubuntu) mit der ID f63181f19b2f erstellen. Der Container wird im abgetrennten Modus (im Hintergrund ausgeführt) ausgeführt, zu dieser Zeit wird ein kleiner Prozess tty Bash-Shell im Hintergrund ausgeführt. Daher wird der Container weiterhin ausgeführt, bis der Bash-Shell-Prozess beendet wird.

Um den im Hintergrund laufenden Container anzuhängen, verwenden Sie

docker attach b1a0873a8647

Wenn Sie sich vom Container trennen möchten, ohne ihn zu beenden (ohne die Bash-Shell zu beenden), Sie können standardmäßig Strg+P, Q verwenden. Dadurch wird der Container ohne Beenden verlassen (im Hintergrund laufen, was bedeutet, ohne die Bash-Shell zu beenden).

Sie können beim Anhängen an den Container einen benutzerdefinierten Befehl übergeben,

docker attach --detach-keys="Strg+S" b1a0873a8647

diesmal wird die Escape-Sequenz Strg+P, Q nicht funktionieren. stattdessen wird Strg+S für das Verlassen des Containers funktionieren. Sie können beliebige Tasten verwenden, z.B. (Strg-*)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X