我有一个Docker文件中包含的嵌入式系统开发映像。为了刷新代码,我需要通过USB Serial连接到节点(例如/dev/ttyACM0
)。
使用Docker,我使用新的绑定装载功能(参见https://github.com/dotcloud/docker/issues/111,-b
或最近的-v
选项)将主机devfs暴露给容器。但是,每当我连接(“cat / d / ttyACM0”,d是对dev的绑定装载)到设备时,我得到“不允许操作”。是否有可能不仅绑定mount,而且实际上在容器中使用字符设备?
甚至可能通过udev规则公开特定开发者?
答案 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”)。