是否可以与多个 Docker 容器共享一个 USB GPS 加密狗?

Is it possible to share a USB GPS dongle with multiple Docker containers?

我在 Raspberry Pi 3 中使用 VK-172 U-Blox AG GPS 作为只接收 APRS iGate 的一部分。我在 RPi 上 运行ning Docker。现在我正在 运行 设置一个 Docker 容器,该容器使用 GPS 加密狗获取 Direwolf 的位置数据,并将其报告给 APRS-IS 网络。

我还想 运行 一个 Docker 容器来使用 GPS 作为我网络上其他机器的非常准确的时间参考。

是否可以与多个 Docker 容器共享一个 USB GPS 加密狗?

73 德 K6JEB

[免责声明] 我不确定您是否想知道如何与容器共享 any USB 设备,或者特别是这个 USB GPS 加密狗(因为一些额外的要求、配置等)。但我会努力做到最好的。

添加单个 USB 设备

如果你想添加一个USB设备(即插入主机)到容器中。您可以使用 --device docker 运行 选项。

--device Add a host device to the container

您将需要您的设备连接到的总线和设备(使用 lsusbdmesg 查找)。示例:

假设我想将这个 Yubikey 添加到容器中:

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
....
Bus 001 Device 017: ID 1050:0010 Yubico.com Yubikey (v1 or v2)

然后我会 运行 像这样的容器:

docker run -dit --device /dev/bus/usb/<BUS>/<DEVICE> <image>
docker run -dit --device /dev/bus/usb/001/017 <image>

然后可以在容器内访问此 USB 设备。现在针对您的用例,将此选项添加到需要访问该设备的容器中。

请注意!您可能需要 --privileged 标志才能获得正确的权限。

--privileged Give extended privileges to this container

正在添加所有 USB 设备

您还可以通过挂载整个 /dev/usb/bus 目录将所有可用的 USB 设备连接到容器或容器:

docker run -dit --privileged -v /dev/bus/usb:/dev/bus/usb <image>

这是你需要的吗?

此致