Възможно ли е да изложите USB устройство на LXC/Docker контейнер?

Имам изображение за разработка на вградена система, съдържащо се във файл на Docker. За да стартирам кода, трябва да се свържа с възлите чрез USB Serial (напр. /dev/ttyACM0).

С Docker използвах новата функция за монтиране на свързване, за да (вижте https://github.com/dotcloud/docker/issues/111, -b или по-скоро опцията -v), за да изложите devfs на хостовете на контейнера. Въпреки това, всеки път, когато се свържа ("cat /d/ttyACM0", d е връзката за свързване към dev) към устройството, получавам "операция не е разрешена". Възможно ли е не само да се обвърже монтиране, но и действително да се използват символни устройства в контейнера?

Би ли било дори възможно да се изложат конкретни разработчици чрез 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

(Намерих от този отговор на Stack Overflow.)

person tuomassalo    schedule 03.08.2016
comment
Благодаря – копирах основната част тук. Вярвам, че отговорих поне на част от въпроса (Възможно ли е не само да се обвърже монтиране, но всъщност да се използват символни устройства в контейнера?). - 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 команди едновременно. Докато docker използва LXC, може да не е в бъдеще и не е гарантирана съвместимост, доколкото знам. - person qkrijger; 31.07.2013