На хосте Linux есть три возможных способа получить доступ к контактам GPIO из контейнера Docker.
Запуск такого контейнера даст контейнеру полный доступ к устройствам хоста, включая GPIO:
$ docker run --privileged -d whatever
Проверьте Документация Docker по этой опции . Это может быть не лучший выбор в зависимости от того, насколько жесткими ваши требования безопасности.
Вместо того, чтобы отображать все устройства хоста в контейнере, вы можете быть конкретным и только показывать устройство / dev / gpiomem в контейнер во время выполнения. Имейте в виду, что этому устройству требуется поддержка драйверов ядра в дистрибутиве Linux хоста. Последние выпуски Raspbian должны иметь это. Ваш пробег с другими распределениями может отличаться.
$ docker run --device /dev/gpiomem -d whatever
GPIO Pi представлен в файловой системе хоста под / sys / class / gpio. Доступ к ним можно получить с помощью прав пользователя через виртуальные файлы в этой файловой системе. Используйте тома Docker, чтобы выставить это в свой контейнер:
$ docker run -v /sys:/sys -d whatever
Учтите, что использование sysfs для GPIO, вероятно, будет медленнее, чем подход к устройству.
Какой из этих трех подходов соответствует вашим потребностям, также будет зависеть от библиотек, которые вы используете при доступе к GPIO. Не все библиотеки поддерживают все три этих параметра.