web-dev-qa-db-fra.com

Démarrer une session d'écran à l'intérieur d'un conteneur géré par LXD

J'aimerais commencer une session screen à l'intérieur d'un conteneur géré par LXD afin de pouvoir déconnecter les processus en cours et éventuellement les reconnecter ultérieurement, lorsque je souhaite vérifier leur statut.

J'ai essayé de joindre le conteneur en cours d'exécution

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

puis démarrez une session avec screen -x, mais j'obtiens l'erreur suivante:

Must be connected to a terminal.

Je peux voir que beaucoup de gens ont eu un problème similaire en essayant d'initier screen à partir de ssh, mais je n'ai pas pu appliquer la solution suggérée à mon cas.

5
Jonathan Y.

Pour LXD utilisant

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

ou

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

ou avec tout autre commutateur screen.


Même chose pour 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.

Pour moi, la solution simple consistait à démarrer l'écran sur l'hôte plutôt que sur le conteneur.

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