与 docker 容器共享虚拟网络

Ans*_*vid 5 linux can-bus docker docker-networking python-can

我正在做一个项目,需要我在我的主机上创建一个虚拟 CAN 网络

$ sudo modprobe vcan
$ sudo ip link add dev vcan0 type vcan
$ sudo ip link set up vcan0
Run Code Online (Sandbox Code Playgroud)

我的 ifconfig :

在此处输入图片说明

我的问题是如何与我的 docker 容器共享这个接口。

如果它有任何用处,我find / -name "vcan0" -print 2>/dev/null在我的主机上运行以下命令:

/sys/class/net/vcan0
/sys/devices/virtual/net/vcan0
/proc/sys/net/ipv4/conf/vcan0
/proc/sys/net/ipv4/neigh/vcan0
Run Code Online (Sandbox Code Playgroud)

我可以使用docker run --rm -it --network=host ... . 唯一的问题是没有网络隔离 b/w docker 主机和容器了。有没有办法在不共享主机网络的情况下实现上述目标?

小智 3

我还没有找到在没有 的情况下与 Docker 容器共享 CAN 网络接口的方法--network=host,但有一个可能的解决方法。您可以使用 CAN-UDP 桥接器(例如cannelonican2udp)通过 UDP 发送 CAN 帧。

我过去曾使用它来将远程设备上的物理 CAN 总线连接到笔记本电脑上的虚拟 CAN 接口。但它对于 Docker 容器来说应该同样有效。

一个缺点是您必须vcan在容器中创建一个接口。这需要您在特权模式下运行容器。