web-dev-qa-db-ja.com

LXD管理コンテナー内でスクリーンセッションを開始する

実行中のプロセスをデタッチし、将来それらのステータスを確認したいときに再アタッチできるように、LXD管理コンテナー内でscreenセッションを開始したいと思います。

実行中のコンテナにアタッチしようとしました

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

screen -xでセッションを開始しますが、次のエラーが表示されます。

Must be connected to a terminal.

screenからsshを開始しようとしたときに、多くの人が同様の問題を抱えていることがわかりますが、提案された解決策を私のケースに適用できませんでした。

5
Jonathan Y.

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"
5
A.B.

私にとって簡単な解決策は、コンテナではなくホストで画面を起動することでした。

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.
0
Luc