GPU dri/by-path for Docker Compose how?
My Jellyfin config has some YAML like this.
# Sometimes work
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
Occasionally when I reboot my server, I end up with no card0 and instead I have /dev/dri/card1. This breaks my Jellyfin server...
I noticed there is also dri/by-path, which I'm guessing is a more stable path than a card index... however, doing this doesn't work for me.
# No work
devices:
- /dev/dri/by-path/pci-0000:00:02.0-render:/dev/dri/renderD128
- /dev/dri/by-path/pci-0000:00:02.0-card:/dev/dri/card0
I tried with and without quotes and the result is the same. Error to start. I'm guessing Docker is failing to correctly parse the string because of the colons in pci-0000:00:02.0-card...
How's everyone else handling this problem? I've been updating my compose.yaml every time the index switches, card0 to card1 to card0... but this is getting annoying now. (This is a worse problem now that I'm running Fedora IoT!)
Any thoughts?
7 replies
Just mount
/dev/dri.This is also good because if you have a newer cpu it has integrated graphics built in, and you have a dedicated gpu card, will give you two devices here, which this will auto mount both.
Genius!
I had the same issue a while ago. :) I think the docs tell you to do it the way you had it, which is why it causes confusion.
As an alternative to mounting full
/dev/dri, there are symlinks under/dev/dri/by-path/which you can use. IIUC they are linked by the used PCI slot, hence should be as stable as the physical order of the cards.I use this pattern in a compose file:
Afaik the card0 is only used for rendering to a desktop/monitor and for this purpose you should actually use the renderD128 path.
But not sure either about this stuff. Sort of works for me. At least
intel_gpu_topshows activity when transcoding :pIf you download hevc main 10 level 5.1 content or below you probably won't need to transcode and can skip the whole problem 🧠