권한 문제가 있습니다. 나는 달리고 있다라이트 프리즘내부에 하나루스트어바웃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
나는 User가 잘 작동하기 때문에 Photoprism과 함께 User를 사용할 수도 /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
도움이 되었기를 바랍니다.