Запуск uv4l внутри Docker Container - не регистрируется узел устройства

Я пытаюсь запустить uv4l внутри контейнера Docker. Это краткое описание проекта u4vl:

кроссплатформенные драйверы пользовательского пространства для реальных или виртуальных устройств ввода и вывода видео (без каких-либо внешних отличий от драйверов ядра) и другие подключаемые серверные или внешние интерфейсы.

Итак, внутри контейнера Docker, u4vl попытается зарегистрировать драйвер пространства пользователя. В моем случае экспонирование камеры Raspberry Pi как /dev/video0,

Когда я запускаю команду:

uv4l --auto-video_nr --driver raspicam --width 1080 --height 720 --encoding mjpeg --server-option '--port=9000'

Я получаю сообщение о том, что <notice> [core] Registering device node /dev/video0, но когда я пытаюсь сделать ls /dev здесь нет /dev/video0 устройство.

Я запускаю контейнер в привилегированном режиме, используя --privileged флаг в docker run команда.

Есть ли что-то еще, что мне нужно сделать внутри контейнера, чтобы "позволить" ему создать драйвер пространства пользователя и новое устройство?

Я ни в коем случае не эксперт по Linux, так что прости меня, если моя терминология / понимание немного не в порядке.

2 ответа

Решение

Я просто работаю над этим, и я работаю с Richo Thesa, запустив

docker run -it --device=/dev/bus/usb/`lsusb | grep Ricoh|awk {'print $2'}`/`lsusb | grep Ricoh|awk {'print $4'}|sed 's/:$//'` -p 8080:8080 --cap-add=ALL --privileged -v /lib/modules:/lib/modules -v=/dev:/dev -e UV4L_PARAMETERS="-k -f --sched-rr --mem-lock --driver uvc --device-id 05ca:2711 --auto-video_nr" daniego/rover-uv4l

Вероятно, вам нужно просто сопоставить устройство. Я буду работать над raspicam в следующем месяце, но вы, вероятно, сможете найти способ заставить его работать, посмотрев мои работы https://github.com/daniego/rover-uv4l и https://hub.docker.com/r/daniego/rover-uv4l/

Вы запускаете эту команду внутри или снаружи контейнера? Запуск контейнера в --privileged режим просто выставляет узлы хост-устройства внутри контейнера, вы не можете новые внутри. Если вы запустите команду снаружи, а затем запустите контейнер с флагом, вы должны увидеть новый узел устройства.

Другие вопросы по тегам