Docker Permissions issue accessing `/dev/dri` Device
1
vote
2
answers
9684
views
I have a permissions problem. I am running Photoprism inside a Docker container on Ubuntu 22.04. I want to use Intel QuickSync hardware transcoding. To do this, the app needs to access the
/dev/dri
device. I am attempting to get the app running without using priviledged: true
in the docker-compose file. It works (ie, the app is able to use /dev/dri
) when using priviledged: true
. When I remove priviledged: true
, the app reports this, even though devices:\n - /dev/dri
is in the docker-compose.yml
file:
$ 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
Currently I have Plex installed natively (ie, not using Docker), and it works with /dev/dri
just fine.
Here are the permissions on /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
is a group name, but what is the meaning of 226,
in the listing output?)
Here are the details of the plex
user (which is the user which is running plexmediaserver
, which is working with /dev/dri
):
$ id plex
uid=998(plex) gid=998(plex) groups=998(plex),44(video),109(render)
...and the user which is running 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)
I thought that since the plex
user is working fine with /dev/dri
, maybe I could use the plex
user with Photoprism as well. But I was unable to get it working:
# inside docker compose
user: "998:998"
The relevant parts of the docker-compose.yml
file:
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
...
TL;DR:
Works when I use docker privileged mode, doesn't work otherwise. Also, I could use some help understanding ls
output which mysteriously includes an unexplained 226,
in it (See above ls
output).
Asked by Eddified
(111 rep)
May 29, 2023, 11:37 PM
Last activity: Oct 7, 2024, 10:34 AM
Last activity: Oct 7, 2024, 10:34 AM