如何避免docker主机和docker容器同时访问串口?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何避免docker主机和docker容器同时访问串口?相关的知识,希望对你有一定的参考价值。
在linux主机中,我可以使用minicom -D /dev/ttyACM0 -b 115200
打开一个串口,如果我在另一个终端执行上面的命令,它将显示Device /dev/ttyACM0 is locked
。以上是我的预期行为。
但是如果我执行minicom -D /dev/ttyACM0 -b 115200
in host,然后使用next命令启动容器:
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!
,它是随机的。
无论如何,似乎两个minicom将竞争抢夺串口的内容。
任何使行为与主机相同的建议,如果我在主机中打开串口,然后在容器中打开。如果可能的话,我可以在容器中获得Device /dev/ttyACM0 is locked
吗?
答案
最后,我自己开始工作了。
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中,现在用卷容器和主机可以知道彼此使用哪个串口。
以上是关于如何避免docker主机和docker容器同时访问串口?的主要内容,如果未能解决你的问题,请参考以下文章