本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。
所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。

docker-adb Docker 镜像下载 - 轩辕镜像

docker-adb 镜像详细信息和使用指南

docker-adb 镜像标签列表和版本信息

docker-adb 镜像拉取命令和加速下载

docker-adb 镜像使用说明和配置指南

Docker 镜像加速服务 - 轩辕镜像平台

国内开发者首选的 Docker 镜像加速平台

极速拉取 Docker 镜像服务

相关 Docker 镜像推荐

热门 Docker 镜像下载

docker-adb
gounthar/docker-adb
自动构建

docker-adb 镜像详细信息

docker-adb 镜像标签列表

docker-adb 镜像使用说明

docker-adb 镜像拉取命令

Docker 镜像加速服务

轩辕镜像平台优势

镜像下载指南

相关 Docker 镜像推荐

提供Android Debug Bridge (adb)和fastboot工具的Docker镜像,基于Alpine,体积小,支持USB设备访问,适用于在容器中管理Android设备,包含预加载RSA密钥简化认证及多种网络使用模式。
4 收藏0 次下载activegounthar镜像

docker-adb 镜像详细说明

docker-adb 使用指南

docker-adb 配置说明

docker-adb 官方文档

docker-adb

本仓库包含Android Debug Bridge的Dockerfile。它让你能够使用adbfastboot等平台工具。

变更记录

  • 2016-07-02 镜像现已使用Alpine作为基础镜像,大幅减小体积。此外,平台工具的下载方式优化,进一步移除了几乎所有依赖并减小镜像大小,现在仅包含platform-tools。
  • 2016-07-02 由于adb内部变更,之前的启动命令在最新版本中不再生效。命令已更新,若你自行指定启动命令,请确保使用adb -a -P 5037 server nodaemon不要再使用fork-server参数。
  • 2016-07-02 修复了.android目录路径问题。感谢@alexislg2发现此问题!

注意事项

  • 容器需要扩展权限以访问USB设备
  • 必须将主机的/dev/bus/usb挂载到容器中

安全性

容器预加载了用于认证的RSA密钥,因此无需在每次运行容器时在设备上接受新密钥(通常密钥由adb二进制文件按需生成)。虽然方便,但这意味着拥有该密钥的其他人可通过ADB访问你的设备。你可通过docker run时使用-v /your/key_folder:/root/.android来提供自定义密钥。

手动更新平台工具

若你认为平台工具已过时且无法等待新镜像,可使用以下命令更新平台工具:

sh
update-platform-tools.sh

该脚本位于/usr/local/bin,已添加到$PATH中。

使用方法

本镜像有多种使用方式,以下列出部分可能的使用模式。根据情况有时可混合使用,也不限于以下模式,若有其他适用方式可自行尝试。

模式1 - 同一机器上的共享网络(简单)

此模式将ADB服务器容器的网络与ADB客户端容器共享。

启动服务器:

docker run -d --privileged -v /dev/bus/usb:/dev/bus/usb --name adbd sorccu/adb

然后在同一机器上:

docker run --rm -ti --net container:adbd sorccu/adb adb devices
docker run --rm -i --net container:adbd ubuntu nc localhost 5037 <<<000chost:devices

优点:

  • 无需端口转发
  • 无需查找IP地址
  • adb forward无需额外配置(但转发仅对客户端容器可见)

模式2 - 主机网络(简单但不推荐)

此模式将ADB服务器直接绑定到主机网络。

启动服务器:

docker run -d --privileged --net host -v /dev/bus/usb:/dev/bus/usb --name adbd sorccu/adb

然后在同一机器上:

docker run --rm -ti --net host sorccu/adb adb devices
docker run --rm -i --net host ubuntu nc localhost 5037 <<<000chost:devices

或在其他机器上:

docker run --rm -ti sorccu/adb adb -H x.x.x.x -P 5037 devices

优点:

  • 无需端口转发
  • 无需查找IP地址
  • adb forward无需额外配置(转发对其他机器可见)
  • 无Docker网络开销
  • ADB服务器对其他机器可见

缺点:

  • ADB服务器默认对其他机器可见(除非修改启动命令)
  • 客户端容器必须使用主机网络或知道主机IP地址

模式3 - 同一机器上的链接容器(可能繁琐)

此模式将ADB服务器容器的网络与ADB客户端容器共享。

启动服务器:

docker run -d --privileged -v /dev/bus/usb:/dev/bus/usb --name adbd sorccu/adb

然后在同一机器上:

docker run --rm -ti --link adbd:adbd sorccu/adb \
  sh -c 'adb -H $ADBD_PORT_5037_TCP_ADDR -P 5037 devices'

优点:

  • 无需端口转发
  • 无需手动查找IP地址
  • adb forward无需额外配置(转发通过指定IP对客户端容器可见)

缺点:

  • 必须通过-H $ADBD_PORT_5037_TCP_ADDRadb传递服务器IP
  • 运行容器时需注意变量在容器内而非调用shell中替换
  • 仅适用于服务器和客户端容器在同一机器的场景

模式4 - 远程客户端

此模式最适合从远程主机访问ADB服务器。

启动服务器:

docker run -d --privileged -v /dev/bus/usb:/dev/bus/usb --name adbd -p 5037:5037 sorccu/adb

然后在客户端主机上:

docker run --rm -ti sorccu/adb adb -H x.x.x.x -P 5037 devices

其中x.x.x.x是服务器主机的IP地址。

优点:

  • 可扩展性更好(支持任意数量的主机/客户端)
  • 无网络限制

缺点:

  • 需知晓IP地址
  • 延迟较高
  • 需自行开放其他端口(如adb forward转发的端口)

Systemd单元

systemd/文件夹中提供了示例systemd单元文件。

单元角色用途
adb-image.service支持从Docker Hub拉取镜像
adbd-container.service支持基于adb镜像创建ADB守护进程容器,但不运行
adbd.service主要运行已准备好的ADB守护进程容器并确保其持续运行

这种三单元配置虽然稍复杂,但具有显著优势:故障时启动速度极快,因为adbd.service的所有准备工作已完成,无需额外操作。adb镜像仅在开机时拉取一次,而非每次启动(或通过systemctl restart adb-image手动触发,这也会重启其他单元)。

将单元文件复制到目标机器的/etc/systemd/system/目录。

然后启用adbd.service以确保开机后自动启动:

sh
systemctl enable adbd

最后,重启机器或手动启动服务:

sh
systemctl start adbd

若修改单元文件,需运行systemctl daemon-reload使其生效。

致谢

  • Jérôme Petazzoni在docker-user论坛上关于USB设备访问的文章
  • @sgerrand 提供的sgerrand/alpine-pkg-glibc
  • @frol 提供的frol/docker-alpine-glibc

许可证

参见LICENSE。

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

oldzhang的头像

oldzhang

运维工程师

Linux服务器

5

"Docker加速体验非常流畅,大镜像也能快速完成下载。"