У меня развернуто приложение с файлом Docker Compose, в котором используются веб-камеры. Исторически моя служба работала как root с privileged: true
, что позволяло мне без проблем получать доступ ко всем веб-камерам на устройстве пользователя. Теперь я пытаюсь быть более ответственным сервисом, работая в контейнере как пользователь, не имеющий root, но при этом я потерял доступ к устройствам /dev/video*
. Моя первая идея заключалась в том, чтобы добавить моего пользователя контейнера, отличного от root, в группу video
с помощью group_add
, но это, похоже, не переносимо, потому что разные дистрибутивы назначают группу video
различным идентификаторам группы.
Например, в моей среде хоста Arch Linux:
$ cat /etc/group | grep "video"
video:x:986:velovix
Но в контейнере ubuntu: 18.04:
$ cat /etc/group | grep "video"
video:x:44:
Это проблематично c, потому что /dev/video*
файлы, которые добавляются в контейнер, сохраняют идентификаторы групп из среды хоста.
$ ls -l /dev/video0
crw-rw---- 1 root 986 81, 0 May 4 23:51 /dev/video0
Есть ли переносимый способ предоставить моему пользователю не- root контейнера доступ к этим устройствам веб-камеры?