Windows宿主机如何向Linux Docker容器挂载USB2CAN Dongle设备
Windows宿主机Docker Linux容器挂载USB2CAN设备操作步骤
1. 前置环境校验
- 确认Docker Desktop已启用WSL2后端:打开Docker Desktop设置 -> 通用,勾选
Use the WSL 2 based engine,如果未开启需要先勾选并重启Docker生效。 - Hyper-V后端的Docker对USB透传支持不完善,建议优先切换到WSL2后端操作。
2. Windows侧安装USB透传工具
WSL2本身无法直接识别宿主机USB设备,需要通过USB/IP工具实现透传:
- 以管理员权限打开PowerShell,执行如下命令安装USB/IP工具:
winget install --interactive --exact dorssel.usbipd-win
- 安装完成后重启电脑生效。
3. 将USB2CAN设备挂载到WSL2
- 插入USB2CAN Dongle到Windows宿主机,管理员权限打开PowerShell,执行命令查看所有已连接的USB设备:
usbipd list
- 在输出列表中找到USB2CAN设备对应的
BUSID,格式一般为x-x(如1-3),记录该值。 - 执行命令将设备绑定到USB/IP服务:
usbipd bind --busid <你的设备BUSID>
- 执行命令将设备附加到WSL2:
usbipd attach --wsl --busid <你的设备BUSID>
- 打开WSL2终端,执行
lsusb确认能识别到USB2CAN设备,再执行ls /dev | grep -E "can|ttyACM"找到对应的设备节点(一般为/dev/can0或/dev/ttyACM0),记录设备路径。
4. 启动容器时挂载USB设备
启动Linux容器时添加--device参数传入对应的设备节点即可,示例命令:
docker run -it --device=/dev/can0 --device=/dev/ttyACM0 <你的镜像名称> /bin/bash
- 如果容器需要更高的设备操作权限,可以额外添加
--privileged参数,或者通过--group-add dialout给容器添加串口设备操作组权限。 - 如果使用docker-compose部署,在yml文件中添加
devices配置段即可:
services: your-service: image: your-image devices: - "/dev/can0:/dev/can0" - "/dev/ttyACM0:/dev/ttyACM0" # 可选配置权限 privileged: true
5. 容器内验证
进入容器后执行lsusb和ls /dev,确认能看到对应的USB2CAN设备,之后就可以正常加载CAN模块、配置波特率使用设备。
注意事项
- 每次拔出USB2CAN设备或者重启电脑后,需要重新执行
usbipd attach命令将设备挂载到WSL2,再启动容器。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

