Как установить правильного члена группы для докеризованного приложения nodeJS

Мне нужно запустить контейнер Docker с приложением, использующим пакет rpio.

Я не понимаю эту часть:

По умолчанию модуль будет использовать /dev/gpiomem при использовании простого доступа GPIO. Чтобы получить доступ к этому устройству, ваш пользователь должен быть членом группы gpio, и вам может потребоваться настроить udev со следующим правилом (как root):

$ cat >/etc/udev/rules.d/20-gpiomem.rules <<EOF
SUBSYSTEM=="bcm2835-gpiomem", KERNEL=="gpiomem", GROUP="gpio",
MODE="0660" EOF

Для доступа к i²c, PWM и SPI или если вы используете более старое ядро, в котором нет модуля bcm2835-gpiomem, вам нужно будет запускать свои программы от имени пользователя root для доступа к /dev/mem.

Поскольку я запускаю свое приложение nodeJS в образе/контейнере докера, я не понимаю, как установить члена группы, имя какого члена и где вызвать эту команду правил udev.

Я очень благодарен за каждое объяснение.


person user3142695    schedule 06.10.2018    source источник


Ответы (1)


Пользователь докера (должен быть зарегистрированным пользователем, например, «pi») должен входить в группу «gpio».

# see all groups the user is assigned to
groups

# if the user is not assigned to gpio, run the following:
sudo adduser $(whoami) gpio

Вам нужно сделать устройство /dev/gpiomem доступным внутри контейнера Docker.

# e.g.
docker run -d --device /dev/gpiomem <image>
person naeramarth7    schedule 06.10.2018
comment
Все это нужно делать в терминале после входа в пи, правильно? Это не обязательно делать при создании образа докера (Dockerfile). - person user3142695; 06.10.2018
comment
Правильно, это нужно сделать на самой малине. То же самое для команды, которую вы упомянули об изменении правил udev, за исключением того, что вы должны быть пользователем root вместо pi. Вы можете измениться на пользователя root, запустив sudo su. - person naeramarth7; 06.10.2018
comment
Что делать с /dev/mem, который упоминается в конце моей цитаты? Это необходимо для использования I2C. Все остальное работает. - person user3142695; 06.10.2018