it-swarm.com.de

GUI in LXC 2.0 / LXD-Containern

Ziel ist es, einige GUI-Apps (Kodi und Retroplayer sind die Hauptanwendungen) zusammenzufassen und vom Host aus zu starten. Aufgrund der Art der Apps benötige ich Audiounterstützung und GPU-Beschleunigung, ohne Verzögerung oder zusätzliche Latenz.

Ich hatte gehofft, die gesamte Desktop-Umgebung zu komprimieren und den Host ohne Desktop-Umgebung freizuhalten, bin mir aber nicht sicher, ob dies möglich ist.

Kann mir jemand Hinweise geben, wie man einen LXC 2.0-Container mit Audio- und Intel-GPU-Beschleunigung erstellt?.

Ich weiß, dass es möglich ist, die GUI-Apps zumindest zu komprimieren und sie in der Desktop-Umgebung des Hosts zu starten, da ich Beispiele gesehen habe, in denen die Leute dies erreicht haben. Kann aber nur Dokumentation für LXC 1.0 finden, die natürlich nicht für 2.0 funktioniert.

2
Jonsonfrank

Ich bin mir noch nicht sicher, wie ich einen Display-Manager in einem Headless-Server vollständig containerisieren soll.

Für das Ausführen von GUI-Apps mit Audio in Containern hat dieses Tutorial für mich funktioniert. Das Folgende ist eine Zusammenfassung der Schritte. Beachten Sie, dass ich LXD 3.5 (snap) auf einem Ubuntu 18.04.1 verwende.

1. Speichern Sie Folgendes in einer Textdatei mit dem Namen 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. Fügen Sie das Profil Ihrer LXD-Instanz hinzu:

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

3. Wenden Sie das Profil auf einen Container an:

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

Das sollte es sein! Führen Sie die folgenden Befehle aus, um Ihre GUI zu testen:

# 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 

Beachten Sie, dass die GUI in meinem Setup nur für den Standardbenutzer ubuntu innerhalb des Containers funktioniert. Ich bin mir nicht sicher, warum, aber die Schritte können möglicherweise angepasst werden, damit andere Containerbenutzer auf die GUI zugreifen können. Ich habe auch Probleme beim Ausführen von hardwarebeschleunigten Apps wie WineHQ oder Steam.

0
Mohamed Laradji