如何断开与 lxc-console 的连接

如何断开与 lxc-console 的连接

lxc-console我在 Ubuntu 12.04 中使用 lxc,它真的很棒。但是,连接后我无法断开会话。我读到过一些Ctrl-aq可以断开我与控制台的连接的方法,但似乎行不通。

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

答案1

是的Ctrl-aq,默认情况下应该可以工作,但是lxc-console实际上不用于screen实现其控制台行为。事实上,如果您使用 screen 可能会遇到冲突,因为它也使用Ctrl-a前缀。如果您在里面screen但没有意识到,那么您需要输入,Ctrl-a a q因为的默认行为screen是您必须输入Ctrl-a a才能实际发送到在其中运行的 shell。您可以通过将或选项^a传递给来更改 escape 的前缀。-e--escape=PREFIXlxc-console

此外,似乎可能存在一个错误,lxc-start因此,如果启动容器时它立即进入控制台模式,您就无法使用它来退出——事实上,所有控制字符似乎都被搞乱了,并打印到屏幕上,而不是按照您期望的方式运行。一种解决方法是使用或选项Ctrl-a q运行它,这样它就不会立即启动控制台,而是手动连接到它:-d--daemon

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

答案2

我做了什么来停止容器

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

这将停止容器。

答案3

它不是通过?连接的吗screenCtrl-a d应该可以让你摆脱它。

Ubuntu LXC 页面有更多信息。

答案4

我在 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

相关内容