web-dev-qa-db-ja.com

LXC 2.0 / LXDコンテナー内のGUI

目的は、いくつかのGUIアプリ(KodiとRetroplayerが主なもの)をコンテナー化し、ホストから起動することです。アプリの性質上、遅延や追加の遅延のないオーディオサポートとGPUアクセラレーションが必要です。

デスクトップ環境全体をコンテナ化し、デスクトップ環境なしでホストを裸にしたいと思っていましたが、それが可能かどうかはわかりません。

オーディオとインテルのGPUアクセラレーションを使用してLXC 2.0コンテナーをセットアップする方法に関するドキュメントの方向を教えてください。

人々がこれを達成した例を見てきたように、少なくともGUIアプリをコンテナ化し、ホストデスクトップ環境内で起動することが可能であることを知っています。しかし、LXC 1.0のドキュメントのみを見つけることができますが、もちろん2.0では機能しません。

2
Jonsonfrank

ヘッドレスサーバーでディスプレイマネージャーを完全にコンテナー化する方法はまだわかりません。

コンテナ内のオーディオでGUIアプリを実行する場合、これは tutorial でうまくいきました。以下はステップの要約です。 Ubuntu 18.04.1。でLXD 3.5(スナップ)を使用していることに注意してください。

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などのハードウェアアクセラレーションアプリの実行で問題が発生しました。

0
Mohamed Laradji