使用–device标志时,在主机上创build的新设备节点不会反映在Docker容器中

我运行的容器有以下选项:docker run -d –device = / dev / bus / usb:/ dev / bus / usb –device = / dev / ttyS0:/ dev / ttyS0 instr_img

在容器内部,我有一个Python代码,它会重置一个USB设备,这会导致主机上'/ dev / bus / usb / 002/005'中的设备文件被删除,而一个新文件(/ dev / bus / usb / 002/006)在其位置创build。 问题是容器内部的'/ dev / bus / usb / 002/005'仍然存在,'/ dev / bus / usb / 002/006'不存在的地方。 主机和容器上的目录“/ dev / bus / usb / 002”现在不同步。 因此,容器内的代码执行会抛出exception,因为它无法与USB设备通信。 我通过在容器中手动创build一个新的设备文件(mknod)来确认它没有被同步到主机,反之亦然。 这是一个不受支持的function或Docker中的错误?

>docker version Client: Version: 1.9.0 API version: 1.21 Go version: go1.4.2 Git commit: 76d6bc9 Built: Tue Nov 3 17:48:04 UTC 2015 OS/Arch: linux/amd64 Server: Version: 1.9.0 API version: 1.21 Go version: go1.4.2 Git commit: 76d6bc9 Built: Tue Nov 3 17:48:04 UTC 2015 OS/Arch: linux/amd64 >docker info Containers: 66 Images: 313 Server Version: 1.9.0 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 445 Dirperm1 Supported: true Execution Driver: native-0.2 Logging Driver: json-file Kernel Version: 3.19.0-47-generic Operating System: Ubuntu 15.04 CPUs: 4 Total Memory: 7.69 GiB Name:my-host-1 ID: VIT4:S2P3:Q4TY:A3I4:L4WH:HFWJ:I36U:PBTV:B3VW:NFXB:LDNM:KY7G Username: myuser Registry: https://index.docker.io/v1/ WARNING: No swap limit support >uname -a Linux my-host-1 3.19.0-47-generic #53-Ubuntu SMP Mon Jan 18 14:02:48 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 

我的解决方法是发出一个mknod命令来创build一个新的设备文件,每次发生设备重置时次设备号增加1(从前一个号码开始); 然而,这不是一个干净的破解,因为我需要进行一些检查,因为这个程序是在Docker容器内部和外部的多个环境中使用的。 我很可能没有正确使用Docker,因为我非常绿色(一个noob)与Docker。 来自一些有经验的Docker用户的一些评论/见解将真正被赞赏。 如果我找不到一个干净的解决方法来处理这个问题,那么我可能会对这个程序进行dockerize。

在此先感谢您的意见!

从所有在线研究和使用“设备”的一些实验中,我发现这个选项不支持临时(热插拔)设备。 如果可以的话,Docker文档没有清楚地说明这一点是很遗憾的。 我只是从用户那里读到一条在线评论。 对于那些想要使用这些设备的“设备”,请不要; 改用' – 特权'和'-v'选项。 这将避免你必须指定确切的设备文件名,例如/ dev / bus / usb / 002/088,而不是只指定/ dev / bus / usb。 ' – 设备'选项要求实际的设备文件名称工作。