我正在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
我做了什么来阻止容器
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-start
或lxc-attach
lxc-start
容器不能正常工作,但是显示关于lxc_cgfsng的错误而不是findinit的pid等。
在这里看到更多: https : //github.com/lxc/lxc/issues/1195
当你完成一些应用程序的工作时,你通常可以终止CTR + C。 如果没有这个技巧,总会有一个退出命令:CTRL +。
另一方面,CTRL + D表示“文件结束”,通常用于阻止某些程序读取键盘。 您可以使用CTRL + D注销常规shell。