在Raspberry Pi 2上运行Docker时,如何将GPIO引脚暴露给Docker容器?

最佳答案

在Linux主机上,有三种可能的方法可以从Docker容器中访问GPIO引脚。

1.使用“--privileged”选项运行Docker

启动这样的容器将使该容器具有对主机设备(包括GPIO)的完全访问权限:

$ docker run --privileged -d whatever

检查Docker documentation on this option。根据您对安全性要求的严格程度,它可能不是最佳选择。

2.添加/dev/gpiomem设备

您可以指定特定对象,而不是将主机的所有设备都暴露于容器中,并且仅在运行时将/dev/gpiomem设备暴露于容器中。请注意,此设备需要主机的Linux发行版中的内核驱动程序支持。 Raspbian的最新版本应具有此功能。您与其他发行版的里程可能会有所不同。
$ docker run --device /dev/gpiomem -d whatever

3.在主机上使用sysfs文件系统

Pi的GPIO在/sys/class/gpio下的主机文件系统中表示。可以通过该文件系统中的虚拟文件以用户权限访问此文件。使用Docker卷将其公开给您的容器:
$ docker run -v /sys:/sys -d whatever

请注意,将sysfs用于GPIO可能会比设备方法慢。

GPIO库

这三种方法中哪种适合您的需求还取决于访问GPIO时使用的库。并非所有库都支持所有这三个选项。

10-05 20:41
查看更多