Як відключити від lxc-консолі


41

Я працюю з lxc в Ubuntu 12.04, і це справді чудово. Однак я не можу відключитися від lxc-consoleсеансу після підключення. Я десь прочитав, що Ctrl-aqвідключить мене від консолі, але, здається, це не працює.

Повинен чи я бути запущений lxc-consoleчерез screenнатомість?


У мене те саме питання. Якщо ви запустите контейнер, забувши параметр "-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в оболонку, що працює всередині нього. Ви можете змінити префікс для втечі, пропускаючи -eабо --escape=PREFIXваріант lxc-console.

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

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

1
<kbd> Ctrl-a q </kdb> не впливає на підключену консоль з lxc версією 0.9.0
Jay Taylor

5
якщо lxc Devs повинен коли-небудь замислитися, чому докер мав мільярд разів більше прийняття, ця помилка є однією з головних причин.
Флоріан Хейгл

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. Вхід як корінь.
  3. Перевірте стан контейнера.
  4. lxc-stop -n <name of the container>

Це зупинить контейнер.


0

Це не з'єднується через screen? Ctrl-a dповинні вийти з цього.

На сторінці Ubuntu LXC є додаткова інформація.


Ні, це не працює. Я використовую екран, щоб я міг відключитися від lxc-консолі. Також посилання, яке ви опублікували, не містить жодної інформації про цю проблему.
robbyt

"Екран відриву : Ca d або Ca Cd" - help.ubuntu.com/community/LXC#Mini_screen_how-to ; не впевнений, що робити, якщо це не працює.
El Yobo

1
@ElYobo Ні, lxc-consoleнасправді не використовується screen, він просто має подібну поведінку і за замовчуванням фактично використовує ключ, що конфліктує з screen's, як описано тут .
aculich

0

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


0

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

Детальніше дивіться тут: https://github.com/lxc/lxc/isissue/1195


-6

Коли ви закінчите роботу з якоюсь програмою, ви зазвичай можете скасувати її відьом CTR + C. Якщо це не робить фокус, завжди є команда quit: CTRL +.

CTRL + D, з іншого боку, означає "END OF FILE", і працює, як правило, для того, щоб зупинити деяку програму з читання клавіатури. Ви можете вийти із звичайної оболонки за допомогою CTRL + D.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.