如何避免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 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 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容器同时访问串口?的主要内容,如果未能解决你的问题,请参考以下文章

如何避免Docker容器启动脚本运行后自动退出

docker从容器中怎么访问宿主机

如何在docker和宿主机之间复制文件

怎样将Docker容器中的文件导入到主机

docker管理应用程序数据容器网络

如何实现跨 Docker 主机存储?- 每天5分钟玩转 Docker 容器技术(73)