Ainda não tenho certeza sobre como contêiner completamente um gerenciador de exibição em um servidor sem cabeçalho.
Para executar aplicativos gui com áudio em contêineres, este tutorial funcionou para mim. A seguir, um resumo das etapas. Note que estou usando o LXD 3.5 (snap) em um Ubuntu 18.04.1.
1. Salve o seguinte em um arquivo de texto chamado lxdguiprofile.txt
:
config:
environment.DISPLAY: :0
raw.idmap: both 1000 1000
user.user-data: |
#cloud-config
runcmd:
- 'sed -i "s/; enable-shm = yes/enable-shm = no/g" /etc/pulse/client.conf'
- 'echo export PULSE_SERVER=unix:/tmp/.pulse-native | tee --append /home/ubuntu/.profile'
packages:
- x11-apps
- mesa-utils
- pulseaudio
description: GUI LXD profile
devices:
PASocket:
path: /tmp/.pulse-native
source: /run/user/1000/pulse/native
type: disk
X0:
path: /tmp/.X11-unix/X0
source: /tmp/.X11-unix/X0
type: disk
mygpu:
type: gpu
name: gui
used_by:
2. Adicione o perfil à sua instância do LXD:
lxc profile create gui
cat lxdguiprofile.txt | lxc profile edit gui
3. Aplique o perfil a um contêiner:
lxc profile add "$container" gui
lxc restart "$container"
Deve ser isso! Para testar seu gui, execute os seguintes comandos:
# Login to the ubuntu user in the container.
lxc exec "$container" -- su ubuntu -l
# This should show an animation of gears if all is well.
glxgears
# This command shows the audio setup info.
pactl info
Observe que, na minha configuração, o GUI só funciona no usuário ubuntu
padrão dentro do contêiner. Não sei por que, mas as etapas provavelmente podem ser ajustadas para permitir que outros usuários de contêiner acessem o gui. Eu também tive problemas ao executar aplicativos acelerados por hardware, como o WineHQ ou o Steam.