在 LXD 管理的容器内启动屏幕会话

在 LXD 管理的容器内启动屏幕会话

我想screen在 LXD 管理的容器内启动一个会话,这样我就可以分离正在运行的进程,并且当我想检查它们的状态时可以重新连接。

我试图连接到正在运行的容器

$ lxc exec my-ubuntu -- /bin/bash

然后使用 启动会话screen -x,但是出现以下错误:

Must be connected to a terminal.

我发现很多人在尝试screen从启动时都遇到了类似的问题ssh,但我无法将建议的解决方案应用到我的情况。

答案1

对于 LXD 使用

lxc exec my-ubuntu -- sh -c "exec >/dev/tty 2>/dev/tty </dev/tty && /usr/bin/screen -s /bin/bash"

或者

lxc exec my-ubuntu -- sh -c "exec >/dev/tty 2>/dev/tty </dev/tty && /usr/bin/screen -x"

或使用任何其他screen开关。


Docker 也一样 ;)

docker run -it my-ubuntu sh -c "exec >/dev/tty 2>/dev/tty </dev/tty && /usr/bin/screen -s /bin/bash"

答案2

对我来说,简单的解决方案是在主机上而不是在容器中启动屏幕。

user@localhost:~$ screen
user@localhost:~$ lxc-attach -n yourcontainer
root@container:~# ./start-gameserver.sh
root@container:~# #Use "Ctrl+A:sessionname mygame<Enter>" to set a screen name
root@container:~# #and use the usual "Ctrl+A,D" to disconnect from screen
user@localhost:~$ screen -ls
There is a screen on:
    25418.mygame    (04/15/2019 11:41:56 PM)    (Detached)
user@localhost:~$ screen -r mygame
root@container:~# #etc.

相关内容