LXC 2.0/LXD 容器内的 GUI

LXC 2.0/LXD 容器内的 GUI

目的是将一些 GUI 应用程序(主要为 Kodi 和 Retroplayer)容器化并从主机启动它们。由于应用程序的性质,我需要音频支持和 GPU 加速,并且不能有延迟或额外的延迟。

我希望将整个桌面环境容器化,并保持主机没有桌面环境,但不确定是否可行。

有人能给我指出关于如何设置带有音频和英特尔 GPU 加速的 LXC 2.0 容器的文档方向吗?

我知道至少可以将 GUI 应用程序容器化并在主机桌面环境中启动它们,因为我见过人们实现这一点的示例。但只能找到 LXC 1.0 的文档,当然不适用于 2.0。

答案1

我尚不确定如何在无头服务器中完全容器化显示管理器。

对于在容器中运行带有音频的 GUI 应用程序,这教程对我有用。以下是步骤摘要。请注意,我在 Ubuntu 18.04.1 上使用 LXD 3.5(Snap)。

1. 将以下内容保存到名为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. 将配置文件添加到您的 LXD 实例:

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

3. 将配置文件应用到容器:

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

就是这样!要测试你的 GUI,请执行以下命令:

# 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 

请注意,在我的设置中,gui 仅在ubuntu容器内的默认用户下有效。我不确定为什么,但可以调整步骤以允许其他容器用户访问 gui。我在运行硬件加速应用程序(例如 WineHQ 或 Steam)时也遇到了麻烦。

相关内容