So trennen Sie sich von der lxc-Konsole


41

Ich arbeite mit lxc in Ubuntu 12.04 und es ist wirklich großartig. Ich kann mich jedoch nicht von einer lxc-consoleSitzung trennen, nachdem ich eine Verbindung hergestellt habe. Ich habe irgendwo gelesen, dass Ctrl-aqich von der Konsole getrennt werde, aber es scheint nicht zu funktionieren.

Sollte ich stattdessen lxc-consoleüber laufen screen?


Ich habe das gleiche Problem. Wenn Sie einen Container starten, der den Parameter "-d" vergisst, gibt es keinen Ausweg. Ctrl aq hat keine Auswirkung. Die einzige Lösung, die ich gefunden habe, besteht darin, mich an der Konsole anzumelden und "sudo poweroff" zu machen, was Sie rausholt.
EOS

Sie können auch eine lxc-stopvon einer anderen Shell
Martin Serrano

Antworten:


56

Ja, Ctrl-aqsollte standardmäßig lxc-consolefunktionieren , wird jedoch nicht verwendet screen, um das Konsolenverhalten zu erreichen. Tatsächlich können Konflikte auftreten, wenn Sie screen verwenden, da es auch Ctrl-aals Präfix verwendet wird. Wenn Sie sich in der Shell befinden screen, es aber nicht bemerken, müssen Sie etwas eingeben, Ctrl-a a qda das Standardverhalten darin screenbesteht, dass Sie etwas eingeben müssen, Ctrl-a aum es tatsächlich ^aan die Shell zu senden , die in der Shell ausgeführt wird. Sie können das Präfix für Escape ändern, indem Sie die Option -eoder --escape=PREFIXan übergeben lxc-console.

Es scheint auch, dass es einen Fehler gibt , der dazu führt, dass alle Steuerzeichen durcheinander geraten und auf dem Bildschirm ausgegeben werden, lxc-startwenn der Container beim Starten, mit dem Sie nicht Ctrl-a qentkommen können, sofort in den Konsolenmodus wechselt anstatt sich so zu verhalten, wie Sie es erwarten. Eine Problemumgehung besteht darin, es mit der Option -doder auszuführen, damit --daemoneine Konsole nicht sofort gestartet wird, und die Verbindung manuell herzustellen:

lxc-start -d -n container-name
lxc-console -n container-name

1
<kbd> Ctrl-a q </ kdb> hat keine Auswirkung auf eine verbundene Konsole mit lxc Version 0.9.0
Jay Taylor

5
Wenn sich die LXC-Entwickler jemals fragen sollten, warum Docker eine milliardenfach höhere Akzeptanz hatte, ist dieser Fehler einer der Hauptgründe.
Florian Heigl

1
@FlorianHeigl Auch wenn ich Ihrer Ansicht, dass dieser Fehler hässlich ist, zustimme, sind die wahren Gründe dafür Einstellungen: bugs.debian.org/cgi-bin/bugreport.cgi?bug=768073 access.redhat.com/articles/1365153 access. redhat.com/discussions/2772171 (und zahlreiche andere Gelegenheiten, in denen RedHat auf "LX (C | D)?" mit "Nein, Docker!" antwortet (beachten Sie, dass dies die besten Google-Ergebnisse für "LXD Debian" und "LXD Redhat" sind Abfragen ").
Bojan Markovic

2

Was ich getan habe, um den Container zu stoppen

  1. Öffnen Sie eine neue Sitzung.
  2. Melden Sie sich als root an.
  3. Überprüfen Sie den Behälterstatus.
  4. lxc-stop -n <name of the container>

Dies stoppt den Container.


0

Verbindung nicht über screen? Ctrl-a dsollte dich da rausholen.

Auf der Ubuntu LXC-Seite finden Sie weitere Informationen.


Nein, das geht nicht. Ich benutze den Bildschirm, damit ich mich von der lxc-Konsole trennen kann. Der von Ihnen veröffentlichte Link enthält auch keine Informationen zu diesem Problem.
Robbyt

"Bildschirm trennen : Ca d oder Ca Cd" - help.ubuntu.com/community/LXC#Mini_screen_how-to ; Ich weiß nicht, was ich tun soll, wenn das nicht funktioniert.
El Yobo

1
@ElYobo Nein, lxc-consoleeigentlich nicht verwenden screen, es muss nur ein ähnliches Verhalten und verwendet standardmäßig tatsächlich einen Schlüssel , dass Konflikte mit screen‚s wie hier beschrieben .
ACULICH

0

Eine alternative Möglichkeit zur Anmeldung ist die ssh <ip>einfache Installation von using lxc-console. Sie können es als Daemon starten lxc-start -d -n <name>und sich dann über die Konsole anmelden, um die IP zum ersten Mal abzurufen.


0

Ich hatte ein ähnliches Problem, als ich mit meinem Trusty LXC in Xenial-host arbeitete und nachdem ich den Container mit gestartet hatte, lxc-start -F -n CNkonnte ich nicht raus und zurück zum Host, wenn ich mich vom Container abgemeldet hatte. Auch das sudo lxc-ls -fim Host gehängt und keiner der lxc-stopBefehle mit -k oder -W oder --no-lock-Optionen funktionierte, so dass ich schließlich -9 den Containerprozess beendet habe, der funktionierte, aber danach den Container mit lxc-startoder lxc-attachnicht richtig startete , aber zeige Fehler über lxc_cgfsng an und finde die Init-PID nicht usw.

Weitere Informationen finden Sie hier: https://github.com/lxc/lxc/issues/1195


-6

Wenn Sie mit einer Anwendung fertig sind, können Sie diese normalerweise mit STRG + C beenden. Wenn dies nicht ausreicht, gibt es immer den Befehl quit: STRG +.

STRG + D hingegen bedeutet "ENDE DER DATEI" und verhindert normalerweise, dass ein Programm die Tastatur liest. Sie können sich mit STRG + D von der regulären Shell abmelden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.