Как я могу динамически получать символические ссылки на устройства, созданные udev на Host в контейнере Docker? - PullRequest
1 голос
/ 16 апреля 2019

Я хочу динамически получать символические ссылки на устройства, созданные udev на хосте в контейнере Docker

Мне удалось привязать символическую ссылку к контейнеру, но она не создается динамически, если устройство удалено (например:USB отключен)

Пример правил Udev:

SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140c", MODE="0666", SYMLINK+="my_dir/gsm-modem0"

Пример запуска Docker:

sudo docker run -v /dev/my_dir/gsm-modem0:/dev/my_dir/gsm-modem0 my_image my_script.sh

1 Ответ

0 голосов
/ 16 апреля 2019

Ответ:

Правило Udev должно ссылаться на новый каталог:

SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140c", MODE="0666", SYMLINK+="my_dir/gsm-modem0"

Работающий докер должен содержать --privileged:

sudo docker run --privileged -v /dev/my_dir:/dev/my_dir my_image my_script.sh

и my_script.sh должен начаться с создания нового файла в созданном каталоге символических ссылок:

mkdir -p /dev/my_dir
touch /dev/my_dir/keep

Пояснение:

По какой-то причине udev может удалить каталог ссылок, если каталог пуст, и, поскольку обычно /dev является новым файлом, создающим tmpfs, перезапуск не сохраняется. Прикосновение к файлу при каждом запуске сохранит ссылку, содержащую каталог на хосте, и, если будет создана новая ссылка, она появится в контейнере

...