Jak odłączyć od konsoli LXC

41

Pracuję z lxc w Ubuntu 12.04 i jest naprawdę świetny. Nie mogę się jednak rozłączyć z lxc-consolesesją po połączeniu. Czytałem gdzieś, Ctrl-aqco odłączy mnie od konsoli, ale wydaje się, że to nie działa.

Czy zamiast tego powinienem biegać lxc-consoleprzez screen?

robbyt
źródło
Mam ten sam problem. Jeśli uruchomisz kontener z pominięciem parametru „-d”, nie ma wyjścia. Ctrl aq nie ma wpływu. Jedyne rozwiązanie, jakie znalazłem, to zalogowanie się do konsoli i wykonanie „sudo poweroff”, dzięki czemu możesz się wydostać.
eos
możesz też zrobić lxc-stopz innej powłoki
Martin Serrano

Odpowiedzi:

56

Tak, Ctrl-aqpowinien działać domyślnie, jednak nie, lxc-consoletak naprawdę nie używa screendo zachowania konsoli. W rzeczywistości możesz napotkać konflikt, jeśli używasz screena, ponieważ jest on również używany Ctrl-ajako prefiks. Jeśli jesteś w środku, screenale nie zdajesz sobie z tego sprawy, musisz wpisać, Ctrl-a a qponieważ domyślnym zachowaniem screenjest to, że musisz pisać, Ctrl-a aaby faktycznie wysłać ^ado powłoki działającej w nim. Możesz zmienić prefiks ucieczki, przekazując opcję -elub .--escape=PREFIXlxc-console

Wygląda też na to, że może występować błąd, lxc-startwięc jeśli natychmiast przejdzie w tryb konsoli po uruchomieniu kontenera, którego nie można użyć Ctrl-a qdo ucieczki - w rzeczywistości wszystkie znaki kontrolne są spieprzone i wydrukowane na ekranie zamiast zachowywać się tak, jak oczekujesz. Jednym z obejść tego problemu jest uruchomienie go za pomocą opcji -dlub --daemon, aby nie od razu uruchamiało konsoli, a następnie łączyło się z nią ręcznie:

lxc-start -d -n container-name
lxc-console -n container-name
aculich
źródło
1
<kbd> Ctrl-a q </kdb> nie ma żadnego wpływu na podłączoną konsolę z lxc w wersji 0.9.0
Jay Taylor
5
jeśli deweloperzy lxc powinni kiedykolwiek zastanawiać się, dlaczego doker miał miliardy razy większą adopcję, ten błąd jest jednym z głównych powodów.
Florian Heigl,
1
@FlorianHeigl Chociaż zgadzam się z twoim odczuwaniem, że ten błąd jest brzydki, prawdziwymi przyczynami tego są postawy: bugs.debian.org/cgi-bin/bugreport.cgi?bug=768073 access.redhat.com/articles/1365153 dostęp. redhat.com/discussions/2772171 (i wiele innych okazji, w których RedHat odpowiada „LX (C | D)?” za pomocą „Nie, Docker!” (zauważ, że są to najlepsze wyniki Google dla „LXD Debian” i „LXD Redhat zapytania ").
Bojan Markovic
2

Co zrobiłem, aby zatrzymać pojemnik

  1. Otwórz nową sesję.
  2. Zaloguj się jako root.
  3. Sprawdź status kontenera.
  4. lxc-stop -n <name of the container>

To zatrzyma pojemnik.

Sreenivas
źródło
0

Czy to się nie łączy screen? Ctrl-a dpowinien cię z tego wyciągnąć.

Strona Ubuntu LXC zawiera więcej informacji.

El Yobo
źródło
Nie, to nie działa. Korzystam z ekranu, aby móc odłączyć się od konsoli LXC. Ponadto opublikowany link nie zawiera żadnych informacji o tym problemie.
robbyt
„Odłącz ekran: Ca d lub Ca Cd” - help.ubuntu.com/community/LXC#Mini_screen_how-to ; nie jestem pewien, co zrobić, jeśli to nie działa.
El Yobo,
1
@ElYobo Nie, lxc-consolewłaściwie nie używać screen, to po prostu ma podobne zachowanie i domyślnie nie używa klucza, że konflikty z screen„s jak opisany tutaj .
aculich
0

Alternatywnym sposobem logowania jest po prostu ssh <ip>skorzystanie z niego lxc-console. Możesz użyć uruchomić go jako demona, lxc-start -d -n <name>a następnie zalogować się za pomocą konsoli, aby uzyskać adres IP po raz pierwszy.

Nishant
źródło
0

Miałem podobny problem podczas pracy z moim Trusty LXC w Xenial-host i po uruchomieniu kontenera lxc-start -F -n CNnie mogłem wyjść i wrócić do hosta po wylogowaniu z kontenera. Zawieszony również sudo lxc-ls -fw hoście i żadna z lxc-stopkomend z opcjami -k lub -W lub --no-lock nie działała, więc ostatecznie zabiłem -9'd proces kontenera, który działał, ale później uruchomiłem kontener z lxc-startlub lxc-attachnie działa poprawnie , ale wyświetla błędy dotyczące lxc_cgfsng i braku znalezienia pid init init itp.

Zobacz więcej tutaj: https://github.com/lxc/lxc/issues/1195

OpenITeX
źródło
-6

Po zakończeniu pracy z jakąś aplikacją zazwyczaj możesz ją zakończyć za pomocą CTR + C. Jeśli to nie pomoże, zawsze jest komenda quit: CTRL +.

CTRL + D, z drugiej strony, oznacza „ZAKOŃCZENIE PLIKU” i działa zwykle tak, aby jakiś program nie czytał klawiatury. Możesz wylogować się ze zwykłej powłoki za pomocą CTRL + D.

Ярослав Рахматуллин
źródło