Как отключиться от lxc-консоли

41

Я работаю с lxc в Ubuntu 12.04, и это действительно здорово. Однако я не могу отключиться от lxc-consoleсеанса после подключения. Я где-то читал, что Ctrl-aqотключит меня от консоли, но, похоже, это не работает.

Должен ли я работать lxc-consoleчерез screen?

robbyt
источник
У меня такая же проблема. Если вы запускаете контейнер, забывая параметр "-d", выхода нет. Ctrl aq не имеет никакого эффекта. Единственное решение, которое я нашел, - это войти в консоль и выполнить команду «sudo poweroff», которая выведет вас.
EOS
Вы также можете сделать lxc-stopиз другой оболочки
Мартин Серрано

Ответы:

56

Да, Ctrl-aqдолжен работать по умолчанию, однако нет, на lxc-consoleсамом деле не используется screenдля выполнения консоли. На самом деле, вы можете столкнуться с конфликтом, если используете экран, поскольку он также использует Ctrl-aпрефикс. Если вы внутри, screenно не понимаете этого, вам нужно будет печатать, Ctrl-a a qтак как по умолчанию screenвы должны печатать, Ctrl-a aчтобы фактически отправить ^aв оболочку, работающую внутри него. Вы можете изменить префикс escape, передав опцию -eили .--escape=PREFIXlxc-console

Кроме того, кажется, что в нем может быть ошибка, lxc-startтак что если он сразу переходит в режим консоли, когда вы запускаете контейнер, который вы не можете использовать Ctrl-a qдля выхода - фактически все управляющие символы, похоже, облажались и выводятся на экран. вместо того, чтобы вести себя так, как вы ожидаете. Один из обходных путей - запустить его с параметром -dили, --daemonчтобы он не запускал консоль сразу, а подключился к ней вручную:

lxc-start -d -n container-name
lxc-console -n container-name
aculich
источник
1
<kbd> Ctrl-a q </ kdb> не влияет на подключенную консоль с версией lxc 0.9.0
Джей Тейлор
5
если разработчикам lxc когда-нибудь станет интересно, почему докер получил в миллиард раз большее распространение, эта ошибка является одной из основных причин.
Флориан Хейгл
1
@FlorianHeigl Хотя я согласен с вашим мнением о том, что эта ошибка ужасна, истинные причины этого - отношение: bugs.debian.org/cgi-bin/bugreport.cgi?bug=768073 access.redhat.com/articles/1365153 доступ. redhat.com/discussions/2772171 (и множество других случаев, когда RedHat отвечает на «LX (C | D)?» с «Нет, Докер!» (обратите внимание, что это лучшие результаты Google для «LXD Debian» и «LXD Redhat»). запросы ").
Боян Маркович
2

Что я сделал, чтобы остановить контейнер

  1. Откройте новый сеанс.
  2. Войдите в систему как root.
  3. Проверьте состояние контейнера.
  4. lxc-stop -n <name of the container>

Это остановит контейнер.

Sreenivas
источник
0

Разве это не соединяется через screen? Ctrl-a dдолжен вытащить тебя из этого.

Страница Ubuntu LXC содержит больше информации.

Эль Йобо
источник
Нет, это не работает. Я использовал экран, чтобы я мог отключиться от lxc-console. Кроме того, ссылка, которую вы разместили, не содержит никакой информации об этой проблеме.
robbyt
«Отключить экран: Ca d или Ca Cd» - help.ubuntu.com/community/LXC#Mini_screen_how-to ; не уверен, что делать, если это не работает.
Эль Йобо
1
@ElYobo Нет, на lxc-consoleсамом деле не использует screen, просто имеет похожее поведение и по умолчанию использует ключ, который конфликтует с ключами, screenкак описано здесь .
aculich
0

Альтернативный способ входа в систему - просто ssh <ip>использовать его lxc-console. Вы можете запустить его как демон, lxc-start -d -n <name>а затем войти в систему с консоли, чтобы получить IP в первый раз.

Nishant
источник
0

У меня была похожая проблема при работе с моим Trusty LXC в Xenial-host, и после запуска контейнера lxc-start -F -n CNне удалось выйти и вернуться к хосту при выходе из контейнера. Кроме того, зависал sudo lxc-ls -fхост, и ни одна из lxc-stopкоманд с опциями -k или -W или --no-lock не работала, поэтому я в конечном итоге убил -9 процесс контейнера, который работал, но после запуска контейнера с lxc-startили lxc-attachне работает должным образом , но отображать ошибки о lxc_cgfsng и не найти init pid и т. д.

Подробнее здесь: https://github.com/lxc/lxc/issues/1195

OpenITeX
источник
-6

Когда вы закончите работу с каким-либо приложением, вы обычно можете прекратить его с помощью CTR + C. Если это не помогает, всегда есть команда выхода: CTRL +.

CTRL + D, с другой стороны, означает «КОНЕЦ ФАЙЛА» и работает, как правило, для того, чтобы некая программа могла читать с клавиатуры. Вы можете выйти из обычной оболочки с помощью CTRL + D.

Ярослав Рахматуллин
источник