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