如何在两个docker容器间使用串口通信

urlyy

在 ubuntu22.04 上测试可用。

1. 安装docker和socat

参考 https://docs.docker.com/engine/install/ubuntu/#install-using-the-convenience-script , 使用一键脚本安装。当然也可以一步步手动安装,这里只是图方便。

然后安装socat

1
sudo apt install socat

2. 创建虚拟串口对

1
sudo socat -d -d PTY,raw,echo=0 PTY,raw,echo=0

假设输出是

1
2
3
2026/03/12 11:16:48 socat[12754] N PTY is /dev/pts/4
2026/03/12 11:16:48 socat[12754] N PTY is /dev/pts/5
2026/03/12 11:16:48 socat[12754] N starting data transfer loop with FDs [5,5] and [7,7]

3. 启动并进入两个容器

这里通过 -v /dev/pts/N 直接把宿主机上的串口设备挂载进容器里。

打开一个新的终端,运行下面命令启动第一个容器。

1
2
3
4
5
6
7
8
# 1. 赋予读写权限
sudo chmod 666 /dev/pts/4

# 2. 启动容器 A
sudo docker run -it --name container_a \
--privileged \
-v /dev/pts/4:/dev/ttyS0 \
ubuntu:latest bash

再打开一个新的终端,运行下面命令启动第二个容器。

1
2
3
4
5
6
7
8
# 1. 赋予读写权限
sudo chmod 666 /dev/pts/5

# 2. 启动容器 B
sudo docker run -it --name container_b \
--privileged \
-v /dev/pts/5:/dev/ttyS0 \
ubuntu:latest bash

4. 测试通信

在第三个终端(容器B)里,开启监听:

1
cat /dev/ttyS0

在第二个终端(容器A)里,发送数据:

1
2
echo "Hello from Container A!" > /dev/ttyS0
echo "Is this working?" > /dev/ttyS0

可以看到容器B里有对应的输出。

  • 标题: 如何在两个docker容器间使用串口通信
  • 作者: urlyy
  • 创建于 : 2026-03-12 11:29:41
  • 更新于 : 2026-03-12 11:44:03
  • 链接: https://urlyy.github.io/2026/03/12/如何在两个docker容器间使用串口通信/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论