web-dev-qa-db-fra.com

Interface graphique dans les conteneurs LXC 2.0 / LXD

L'objectif est de conteneuriser quelques applications d'interface graphique (Kodi et Retroplayer étant les principales) et de les lancer à partir de l'hôte. En raison de la nature des applications, j'aurais besoin d'une prise en charge audio et d'une accélération gpu, sans décalage ni latence supplémentaire.

J'espérais pouvoir conteneuriser l'ensemble de l'environnement de bureau et garder l'hôte dépourvu, sans environnement de bureau, mais je ne savais pas si cela serait possible.

Quelqu'un peut-il m'indiquer des informations sur la manière de configurer un conteneur LXC 2.0 avec accélération audio et gpu intel.

Je sais qu'il est possible au moins de conteneuriser les applications graphiques et de les lancer dans l'environnement de bureau des hôtes, comme je l'ai déjà vu. Mais ne peut trouver que la documentation pour LXC 1.0, qui bien sûr ne fonctionne pas pour 2.0.

2
Jonsonfrank

Je ne sais pas encore comment conteneuriser complètement un gestionnaire d'affichage dans un serveur sans serveur.

Pour exécuter des applications graphiques avec de l'audio dans des conteneurs, ce tutoriel a fonctionné pour moi. Ce qui suit est un résumé des étapes. Notez que j'utilise LXD 3.5 (capture instantanée) sur un Ubuntu 18.04.1.

1. Enregistrez les éléments suivants dans un fichier texte nommé 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. Ajoutez le profil à votre instance LXD:

lxc profile create gui
cat lxdguiprofile.txt | lxc profile edit gui

3. Appliquez le profil à un conteneur:

lxc profile add "$container" gui
lxc restart "$container"

Ça devrait être ça! Pour tester votre interface graphique, exécutez les commandes suivantes:

# 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 

Notez que, dans ma configuration, l'interface graphique ne fonctionne que par l'utilisateur ubuntu par défaut à l'intérieur du conteneur. Je ne sais pas pourquoi, mais les étapes peuvent probablement être modifiées pour permettre à d'autres utilisateurs de conteneur d'accéder à l'interface graphique. J'ai également eu des problèmes pour exécuter des applications à accélération matérielle, telles que WineHQ ou Steam.

0
Mohamed Laradji