`/dev/dri`デバイスへのDockerアクセス​​権の問題

`/dev/dri`デバイスへのDockerアクセス​​権の問題

権限の問題があります。私は走っていますライトプリズム内部に一つルーストアバウトUbuntu 22.04のコンテナ。 Intel QuickSyncハードウェアトランスコーディングを使用したいです。これを行うには、アプリケーションがデバイス/dev/driにアクセスする必要があります。priviledged: truedocker-composeファイルを使用せずにアプリケーションを実行しようとしています。使用すると動作します(つまり、アプリケーションはそれを使用できます/dev/dripriviledged: true。を削除すると、アプリはファイルpriviledged: trueからも報告します。devices:\n - /dev/dridocker-compose.yml

$ docker-compose up -d
...
 ⠿ Container photoprism-photoprism-1  Starting                                                                                                                             1.9s 
Error response from daemon: error gathering device information while adding custom device "/dev/dri": no such file or directory

現在私群れローカルにインストールされ(つまり、Dockerを使用せずに)/dev/driうまく機能します。

権限は次のとおりです/dev/dri

$ ls -al /dev/dri
total 0
drwxr-xr-x   3 root root        100 May 29 14:09 .
drwxr-xr-x  19 root root       5200 May 29 14:09 ..
drwxr-xr-x   2 root root         80 May 29 14:09 by-path
crw-rw----+  1 root render 226,   0 May 29 14:09 card0
crw-rw----+  1 root render 226, 128 May 29 14:09 renderD128

(グループ名なのにrenderリスト出力ではどういう意味ですか?)226,

ユーザーの詳細は次のとおりです(実行中、plexユーザーを使用)。plexmediaserver/dev/dri

$ id plex
uid=998(plex) gid=998(plex) groups=998(plex),44(video),109(render)

...そしてそれを実行しているユーザーdocker-compose up -d

$ id myuser
uid=1000(myuser) gid=1000(myuser) groups=1000(myuser),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),120(lpadmin),131(lxd),132(sambashare)

plex私はユーザーがうまく動作するので、Photoprismでユーザーを使用することもできる/dev/driと思いました。plexしかし、動作させることはできません。

   # inside docker compose
   user: "998:998"

文書の関連部分docker-compose.yml:

services:
  photoprism:
    image: photoprism/photoprism:latest
    ...
    ## Start as non-root user before initialization (supported: 0, 33, 50-99, 500-600, and 900-1200):
    user: "998:998"
    ## Share hardware devices with FFmpeg and TensorFlow (optional):
    devices:
      - "/dev/dri:/dev/dri"                         # Intel QSV
    ...

重要な要約:docker特権モードを使用する場合は機能し、それ以外の場合は機能しません。また、ls説明できない内容が奇妙に含まれている出力を理解するのに役立ちます226,(上記の出力を参照ls)。

答え1

QNAP TS-251bとフォトプリズムでも同様の問題が発生しました。次のdocker cmdが私にとって効果的でした。

sudo docker run -d --device=/dev/dri photoprism

また、デバイスマッピングに関してQNAPサポートチームに連絡し、彼らはdriデバイス(コンテナで実行)をマッピング(作成)するための次のステップを提供しました。

mkdir /dev/dri
mknod /dev/dri/card0 c 226 0
mknod /dev/dri/renderD128 c 226 128
chmod 666 /dev/dri/card0
chmod 666 /dev/dri/renderD128

お役に立てば幸いです。

関連情報