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

Linux下能否将USB设备传入Docker容器?Ubuntu主机Docker访问ADB设备问题

解决Docker容器访问ADB设备的问题

当然可以!Linux系统下完全支持将USB设备传入Docker容器,也能通过Docker访问ADB设备——你之前失败大概率是因为权限配置或者挂载方式不对,下面给你两种靠谱的解决方案:

方法一:挂载主机ADB套接字(推荐,轻量复用)

这种方法不需要容器直接操作USB硬件,而是通过共享主机的ADB套接字来实现访问,步骤如下:

  1. 先确认主机能正常识别ADB设备
    在主机终端运行:

    adb devices
    

    确保设备列表里能看到你的设备,并且状态是device(如果是unauthorized,先在设备上点击授权弹窗)。

  2. 运行容器时挂载ADB套接字和配置目录
    主机的ADB套接字默认在/var/run/adb.sock,用户的ADB配置(包含设备授权信息)在~/.android。启动容器时挂载这两个路径:

    docker run -it --rm \
      -v /var/run/adb.sock:/var/run/adb.sock \
      -v ~/.android:/root/.android \
      your-docker-image-name
    

    (如果你的容器用户不是root,把/root/.android换成容器内用户的对应目录,比如/home/user/.android)

  3. 容器内安装ADB(如果镜像没有自带)
    比如Ubuntu/Debian系镜像:

    apt update && apt install -y adb
    

    之后在容器内直接运行adb devices就能看到主机上的ADB设备了。

方法二:直接挂载USB设备到容器

如果需要容器直接访问USB硬件(比如主机ADB服务无法满足特殊需求时),可以用这种方式:

  1. 找到USB设备的路径
    在主机终端运行lsusb,找到你的ADB设备的Bus和Device号,比如输出里的Bus 001 Device 005,对应的设备路径是/dev/bus/usb/001/005。

  2. 启动容器时挂载USB设备
    使用--device参数精准挂载单个USB设备(推荐),或者用--privileged(权限全开,不建议生产环境使用):

    # 推荐:精准挂载单个USB设备
    docker run -it --rm \
      --device=/dev/bus/usb/001/005 \
      your-docker-image-name
    
    # 或者用privileged模式(权限全开)
    docker run -it --rm \
      --privileged \
      -v /dev/bus/usb:/dev/bus/usb \
      your-docker-image-name
    
  3. 容器内配置ADB
    同样先安装ADB,然后启动ADB服务:

    apt update && apt install -y adb
    adb start-server
    adb devices
    

常见坑点排查

  • 权限问题:主机用户需要加入plugdev组才能访问USB设备,运行sudo usermod -aG plugdev $USER,然后重新登录主机生效。
  • ADB版本不兼容:容器内的ADB版本和主机差异过大可能导致连接失败,尽量保证两者版本一致。
  • 设备授权:主机第一次连接设备时必须点击“允许”,否则容器也无法访问该设备。

内容的提问来源于stack exchange,提问作者Amit Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:54:44