如何避免docker主机和docker容器同时访问串口?

问题描述 投票:1回答:1

在linux主机中,我可以使用minicom -D /dev/ttyACM0 -b 115200打开一个串口,如果我在另一个终端执行上面的命令,它将显示Device /dev/ttyACM0 is locked。以上是我的预期行为。

但是如果我执行minicom -D /dev/ttyACM0 -b 115200in 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 serial-port
1个回答
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中,现在用卷容器和主机可以知道彼此使用哪个串口。

© www.soinside.com 2019 - 2024. All rights reserved.