在linux主机中,我可以使用minicom -D /dev/ttyACM0 -b 115200
打开一个串行端口,如果在另一个终端上执行上述命令,它将显示Device /dev/ttyACM0 is locked
。以上是我的预期行为。
但是,如果我在主机中执行minicom -D /dev/ttyACM0 -b 115200
,然后使用下一条命令启动容器:
docker run --privileged -idt --name test -v /dev:/dev -v /etc/apt:/etc/apt ubuntu:16.04
然后在容器中执行minicom -D /dev/ttyACM0 -b 115200
,这将显示我成功打开了串行端口。
然后出现的现象是:如果串行端口打印了一些信息: Hello world!
。主机中的minicom
可以获取内容Hello
,而容器中的minicom
可以获取内容world!
,但它是随机的。
无论如何,似乎两个小型通信公司将竞争获取串行端口的内容。
关于使行为与主机相同的任何建议,如果我在主机中打开串行端口,然后在容器中打开。如果可以的话,我可以在容器中拿到Device /dev/ttyACM0 is locked
吗?
答案 0 :(得分:0)
最后,我自己动手做。
docker run --privileged -idt --pid=host --name test -v /var/lock:/var/lock -v /dev:/dev -v /etc/apt:/etc/apt ubuntu:16.04
minicom将其锁定文件放在/ var / lock中,现在有了卷容器和主机,彼此就可以知道使用了哪个串行。