是否可以将USB设备暴露给LXC / Docker容器?

时间:2013-07-22 16:00:40

标签: mount udev docker lxc

我有一个Docker文件中包含的嵌入式系统开发映像。为了刷新代码,我需要通过USB Serial连接到节点(例如/dev/ttyACM0)。

使用Docker,我使用新的绑定装载功能(参见https://github.com/dotcloud/docker/issues/111-b或最近的-v选项)将主机devfs暴露给容器。但是,每当我连接(“cat / d / ttyACM0”,d是对dev的绑定装载)到设备时,我得到“不允许操作”。是否有可能不仅绑定mount,而且实际上在容器中使用字符设备?

甚至可能通过udev规则公开特定开发者?

3 个答案:

答案 0 :(得分:4)

目前,Docker无法做到这一点。但是,我们正在开发一种“特权”模式,允许容器访问USB或GPU等设备。

答案 1 :(得分:2)

--device选项现在允许将/dev公开给容器,例如:

docker run -t -i --device=/dev/ttyUSB0 ubuntu bash

(我从this Stack Overflow answer找到。)

答案 2 :(得分:0)

虽然不可能通过Docker本身(参见上一个答案)直接在正在运行的容器上使用lxc-cgroup似乎为我做了诀窍:

sudo lxc-cgroup -n 0dd4c652d0740e5ddb6f80e6f2ec2c52dd6435b22c8114c000c58ca9703ebc62 devices.allow "c 166:* rwm"

166代表设备类ttyACM。

Docker id必须是完整的(通过Docker检查“ID”)。