You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Android设备接入Docker容器?ADB无法识别设备求助

解决Docker/WSL中ADB无法识别Android设备的问题

一、Ubuntu 22.04 + Docker场景

  1. 先确认主机端ADB正常识别设备
    在主机执行adb devices,确保设备已授权且能被识别。如果主机都看不到,先解决主机的USB调试授权问题。
  2. 同步主机UDev规则到容器
    • 主机上创建或编辑/etc/udev/rules.d/51-android.rules,添加规则:
      SUBSYSTEM=="usb", ATTR{idVendor}=="你的设备厂商ID", MODE="0666", GROUP="plugdev"
      
      厂商ID可通过lsusb获取(比如Google设备是18d1)。
    • 重载UDev规则:
      sudo udevadm control --reload-rules && sudo udevadm trigger
      
    • 启动容器时挂载该规则文件:
      docker run -d --privileged -v /dev/bus/usb:/dev/bus/usb -v /etc/udev/rules.d/51-android.rules:/etc/udev/rules.d/51-android.rules --name adbd sorccu/adb
      
  3. 确保容器与主机ADB版本兼容
    分别在主机和容器内执行adb version,主版本号需一致(比如都是1.0.41)。版本不兼容会导致设备无法识别。
  4. 容器内重启ADB服务
    进入容器后执行:
    adb kill-server && adb start-server
    
    再执行adb devices查看设备。

二、Mac OS + Docker场景

Mac的Docker基于虚拟机,直接挂载/dev/bus/usb无效,需调整挂载方式:

  1. 主机确认设备可被ADB识别
    执行ls /dev/tty.usb*找到设备路径(比如/dev/tty.usbmodem14101),同时确保主机adb devices能看到设备。
  2. 修改容器启动命令
    直接挂载整个/dev目录或指定设备:
    docker run -d --privileged -v /dev:/dev --name adbd sorccu/adb
    
  3. 容器内重启ADB服务
    进入容器执行adb kill-server && adb start-server,再检查设备列表。

三、Windows WSL + usbip场景

  1. 检查WSL内ADB权限
    执行sudo adb kill-server && sudo adb start-server,再运行adb devices,避免权限不足导致无法识别。
  2. 配置WSL的UDev规则
    • 创建/etc/udev/rules.d/51-android.rules,添加与Ubuntu相同的规则(替换为你的设备厂商ID)。
    • 重启UDev服务:
      sudo service udev restart
      
  3. 将用户加入plugdev组
    sudo usermod -aG plugdev $USER
    
    退出并重新登录WSL生效。
  4. 手动调整设备权限
    通过lsusb找到设备的Bus和Device号(比如Bus 001, Device 002),对应路径/dev/bus/usb/001/002,执行:
    sudo chmod 0666 /dev/bus/usb/001/002
    
    重启ADB后再次检查。

内容的提问来源于stack exchange,提问作者Dmitry Kozin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:17:27