Предоставление устройства TTY в контейнере докеров с помощью докеров для Mac

Я пытаюсь предоставить доступ к Arduino, подключенному к моему Mac, экземпляру Linux, который я запускаю в Docker для Mac (без виртуальной машины).

Arduino показывает себя как /dev/tty.usbserialXXX. Я использую образ докера node, основанный на Ubuntu.

Команда, которую я запускаю,

$ docker run --rm -it -v `pwd`:/app --device /dev/tty.usbmodem1421 node bash
docker: Error response from daemon: linux runtime spec devices: error gathering device information while adding custom device "/dev/tty.usbmodem1421": lstat /dev/tty.usbmodem1421: no such file or directory.

Если я попытаюсь использовать --privileged

$ docker run --rm -it -v `pwd`:/app --device /dev/tty.usbmodem1421 --privileged node bash
root@8f18fdbcf64d:/# ls /dev/tty.*
ls: cannot access /dev/tty.*: No such file or directory

Ничего не выставляется!

Я использую это, чтобы выставлять последовательные устройства для тестирования последовательных драйверов в Linux.


person reconbot    schedule 05.11.2016    source источник


Ответы (2)


Проблема здесь в основном в том, что вы не используете Docker на своем Mac. Вы используете виртуальную машину Linux на своем Mac, внутри которой вы используете Docker. Это означает, что легко открыть дерево /dev внутри виртуальной машины Linux для Docker, но труднее предоставить доступ к устройствам с вашего Mac без какой-либо поддержки со стороны гипервизора.

Используя устаревший «Docker Toolbox» для Mac, построенный на основе VirtualBox, должна быть возможность назначить USB-устройство хосту VirtualBox, на котором работает Docker (что, в свою очередь, позволит вам открыть его для ваших контейнеров Docker).

В этой проблеме GitHub рассказывается об этой конкретной ситуации и есть ссылки на полезную документацию.

Я не знаю, доступна ли в настоящее время такая функция с гипервизором, используемым в более новом пакете «Docker for Mac».

person larsks    schedule 05.11.2016
comment
Нет ВМ с Docker для Mac - person reconbot; 04.12.2016
comment
Есть! Я рекомендую вам внимательно прочитать документацию, особенно часть, в которой говорится, что движок Docker работает в дистрибутиве Alpine Linux поверх виртуальной машины xhyve в Mac OS X. Docker под OS X раньше использовал VirtualBox, но недавно переключился на xhyve, но в обоих случаях он все еще работает. в виртуальной машине Linux, потому что это единственная платформа, на которой Docker работает изначально. - person larsks; 04.12.2016

Устройство Arduino, указанное в /dev/tty.usbserialXXX, может быть символической ссылкой на устройство, а не фактическим путем. Чтобы прочитать путь символической ссылки, попробуйте использовать

docker run --rm -it -v `pwd`:/app --device=/dev/$(readlink /dev/tty.usbmodem1421) node bash

Некоторое время назад по этому поводу была открыта проблема. Проверьте, решает ли это вашу проблему

person Penkey Suresh    schedule 05.11.2016