Можно ли открыть USB-устройство для контейнера LXC/Docker?

У меня есть образ разработки встроенной системы, содержащийся в файле Docker. Чтобы прошить код, мне нужно подключиться к узлам через USB Serial (например, /dev/ttyACM0).

В Docker я использовал новую функцию привязки для (см. https://github.com/dotcloud/docker/issues/111, -b или, в последнее время, вариант -v), чтобы открыть хосты devfs для контейнера. Однако всякий раз, когда я подключаюсь («cat / d / ttyACM0», d — это монтирование привязки к dev) к устройству, я получаю «операция не разрешена». Можно ли не только привязать mount, но и реально использовать символьные устройства в контейнере?

Может быть, даже можно будет разоблачить конкретных разработчиков с помощью правил udev?


person till    schedule 22.07.2013    source источник
comment
Что такое поздно?   -  person Peter Mortensen    schedule 14.08.2018


Ответы (3)


Параметр --device теперь позволяет отображать /dev в контейнере, например:

docker run -t -i --device=/dev/ttyUSB0 ubuntu bash

(Я нашел из этот ответ о переполнении стека.)

person tuomassalo    schedule 03.08.2016
comment
Спасибо - я скопировал основную часть здесь. Кажется, я ответил по крайней мере на часть вопроса (можно ли не только привязать mount, но и использовать символьные устройства в контейнере?). - person tuomassalo; 03.08.2016

На данный момент это невозможно с Docker. Однако мы работаем над «привилегированным» режимом, который позволит контейнеру получать доступ к таким устройствам, как USB или GPU.

person creack    schedule 22.07.2013

Хотя это невозможно через сам Docker (см. предыдущий ответ), использование lxc-cgroup непосредственно в работающем контейнере, похоже, помогает мне:

sudo lxc-cgroup -n 0dd4c652d0740e5ddb6f80e6f2ec2c52dd6435b22c8114c000c58ca9703ebc62 devices.allow "c 166:* rwm"

166 означает ttyACM, класс устройства.

Идентификатор Docker должен быть полным (через Docker проверьте «ID»).

person till    schedule 23.07.2013
comment
Обратите внимание, что опасно полагаться на команды docker и LXC одновременно. Хотя докер использует LXC, в будущем он может не использоваться, и, насколько мне известно, совместимость не гарантируется. - person qkrijger; 31.07.2013