首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker -一种访问主机USB或串行设备的方法?

Docker -一种访问主机USB或串行设备的方法?
EN

Stack Overflow用户
提问于 2014-06-15 08:56:48
回答 10查看 251.6K关注 0票数 195

据我所知,

Docker没有任何方法让容器访问主机串行或USB端口

..。有什么技巧可以做到这一点吗?

EN

Stack Overflow用户

发布于 2019-11-08 19:24:56

我们很难将一个特定的USB设备绑定到一个也是特定的docker容器上。如您所见,推荐的实现方式是:

代码语言:javascript
复制
docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb ubuntu bash

它会将所有设备绑定到这个容器。这不安全。每个容器都被授权操作所有的容器。

另一种方法是通过devpath绑定设备。它可能看起来像:

代码语言:javascript
复制
docker run -t -i --privileged -v /dev/bus/usb/001/002:/dev/bus/usb/001/002 ubuntu bash

或者

(更好,不

):

代码语言:javascript
复制
docker run -t -i --device /dev/bus/usb/001/002 ubuntu bash

安全多了。但实际上很难知道特定设备的devpath是什么。

我写了这个repo来解决这个问题。

https://github.com/williamfzc/usb2container

部署此服务器后,您可以通过HTTP请求轻松获取所有已连接设备的信息:

代码语言:javascript
复制
curl 127.0.0.1:9410/api/device

并获取:

代码语言:javascript
复制
{
    "/devices/pci0000:00/0000:00:14.0/usb1/1-13": {
        "ACTION": "add",
        "DEVPATH": "/devices/pci0000:00/0000:00:14.0/usb1/1-13",
        "DEVTYPE": "usb_device",
        "DRIVER": "usb",
        "ID_BUS": "usb",
        "ID_FOR_SEAT": "xxxxx",
        "ID_MODEL": "xxxxx",
        "ID_MODEL_ID": "xxxxx",
        "ID_PATH": "xxxxx",
        "ID_PATH_TAG": "xxxxx",
        "ID_REVISION": "xxxxx",
        "ID_SERIAL": "xxxxx",
        "ID_SERIAL_SHORT": "xxxxx",
        "ID_USB_INTERFACES": "xxxxx",
        "ID_VENDOR": "xxxxx",
        "ID_VENDOR_ENC": "xxxxx",
        "ID_VENDOR_FROM_DATABASE": "",
        "ID_VENDOR_ID": "xxxxx",
        "INTERFACE": "",
        "MAJOR": "189",
        "MINOR": "119",
        "MODALIAS": "",
        "PRODUCT": "xxxxx",
        "SEQNUM": "xxxxx",
        "SUBSYSTEM": "usb",
        "TAGS": "",
        "TYPE": "0/0/0",
        "USEC_INITIALIZED": "xxxxx",
        "adb_user": "",
        "_empty": false,
        "DEVNAME": "/dev/bus/usb/001/120",
        "BUSNUM": "001",
        "DEVNUM": "120",
        "ID_MODEL_ENC": "xxxxx"
    },
    ...
}

并将它们绑定到您的容器上。例如,您可以看到此设备的DEVNAME为

代码语言:javascript
复制
docker run -t -i --device /dev/bus/usb/001/120 ubuntu bash

也许这会有所帮助。

票数 4
EN
查看全部 10 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24225647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档