如何从lxc控制台断开连接

我正在Ubuntu 12.04中使用lxc,这真的很棒。 但是,连接后,我无法断开与lxc-console会话的连接。 我在某个地方看到Ctrl-a q会把我从控制台上断开,但它似乎不起作用。

我应该通过screen运行lxc-console吗?

是的, Ctrl-a q应该默认工作,但是不, lxc-console实际上并不使用screen来实现其控制台行为。 实际上,如果您使用的是屏幕,则可能会遇到冲突,因为它也使用Ctrl-a作为前缀。 如果你在screen但没有意识到,那么你需要inputCtrl-a aq,因为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. 打开一个新的会话。
  2. 以root身份login。
  3. 检查容器状态。
  4. lxc-stop -n <name of the container>

这将停止容器。

不通过screen连接吗? Ctrl-a d应该让你摆脱它。

Ubuntu LXC页面有更多信息。

另一种login方式是只使用lxc-console ssh <ip> instaed。 您可以使用lxc-start -d -n <name>作为守护进程启动它,然后使用控制台login来第一次获取IP。

在Xenial-host中使用我的Trusty LXC时遇到了类似的问题,并且使用lxc-start -F -n CN容器后, lxc-start -F -n CN从容器注销时无法退出并返回到主机。 另外主机上的sudo lxc-ls -f被挂起,没有任何带有-k或-W或–no-lock选项的lxc-stop命令可以工作,所以我最终终止了工作的容器进程,但之后用lxc-startlxc-attach lxc-start容器不能正常工作,但是显示关于lxc_cgfsng的错误而不是findinit的pid等。

在这里看到更多: https : //github.com/lxc/lxc/issues/1195

当你完成一些应用程序的工作时,你通常可以终止CTR + C。 如果没有这个技巧,总会有一个退出命令:CTRL +。

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