如何从LXC控制台断开连接


41

我正在Ubuntu 12.04中使用lxc,这真的很棒。但是,连接lxc-console后,我无法断开与会话的连接。我读到某个地方Ctrl-aq会断开与控制台的连接,但似乎无法正常工作。

我应该改为lxc-console通过screen吗?


我有同样的问题。如果启动容器时忘记了“ -d”参数,则没有出路。Ctrl aq无效。我发现的唯一解决方案是登录到控制台,然后执行“ sudo poweroff”,这使您摆脱困境。
eos 2015年

你也可以做一个lxc-stop从另一个shell
马丁塞拉诺

Answers:


56

是的,Ctrl-aq默认情况下应该可以工作,但是,否,lxc-console实际上并没有screen用于完成其控制台行为。实际上,如果您使用屏幕,则可能会遇到冲突,因为它也Ctrl-a用作前缀。如果您在里面screen但是不知道它,那么您将需要输入,Ctrl-a a q因为的默认行为screen是您必须键入Ctrl-a a才能实际发送^a到在其中运行的shell。您可以通过将-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开发人员应该怀疑为什么docker的采用率提高了十亿倍,那么此bug就是主要原因之一。
Florian Heigl

1
@FlorianHeigl我同意您的观点,认为此错误很丑陋,但真正的原因是态度:bugs.debian.org/cgi-bin/bugreport.cgi? bug = 768073 access.redhat.com/articles/1365153 访问。 redhat.com/discussions/2772171(以及RedHat多次以“否,Docker!”回应“ LX(C | D)?”的其他情况)(请注意,这是Google在“ LXD Debian”和“ LXD Redhat”中的最高搜索结果)查询“)。
博扬马尔科维奇

2

我做了什么来停止容器

  1. 打开一个新会话。
  2. 以root身份登录。
  3. 检查容器状态。
  4. lxc-stop -n <name of the container>

这将停止容器。


0

它不是通过screen吗? Ctrl-a d应该让你摆脱困境。

Ubuntu的LXC页有更多的信息。


不,这不起作用。我一直在使用屏幕,以便可以从lxc-console断开连接。此外,您发布的链接没有有关此问题的任何信息。
罗比

“分离屏幕:Ca d或Ca Cd” -help.ubuntu.com/community/LXC#Mini_screen_how-to ; 不知道如果不起作用该怎么办。
El Yobo

1
@ElYobo不,lxc-console实际上并没有使用screen,它只是具有类似的行为,并且默认情况下实际上使用了与冲突的密钥,screen如此处所述
aculich 2012年

0

另一种登录方式是仅ssh <ip>使用即可lxc-console。您可以使用将其作为守护程序启动lxc-start -d -n <name>,然后使用控制台登录以首次获取IP。


0

在Xenial-host中与我的Trusty LXC一起使用时,在启动容器后lxc-start -F -n CN无法退出并从容器注销时返回主机时,我遇到了类似的问题。另外sudo lxc-ls -f,主机中的挂起了,并且没有任何lxc-stop带有-k或-W或--no-lock选项的命令,所以我最终杀死了-9'正常工作的容器进程,但随后启动了带有lxc-startlxc-attach不正确的容器,但显示有关lxc_cgfsng的错误,但未找到init pid等。

在此处查看更多信息:https : //github.com/lxc/lxc/issues/1195


-6

处理完某个应用程序后,通常可以终止它,如CTR + C。如果那不能解决问题,总会有quit命令:CTRL +。

另一方面,CTRL + D表示“文件结束”,通常用于阻止某些程序读取键盘。您可以使用CTRL + D退出常规shell。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.