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

Docker容器无法连接主机ADB创建的UiAutomator2服务器求助

容器化测试自动化UiAutomator2连接拒绝问题解决方法

问题核心

容器内ADB能通过host.docker.internal访问主机ADB并列出设备,但主机本地启动的UiAutomator2服务端口未对容器开放,导致容器侧请求被拒绝。

具体解决步骤

1. 采用主机网络模式运行容器

让容器直接复用主机网络栈,无需额外端口映射即可访问主机和设备的所有端口:

docker run --network host your-test-automation-image

注意:此模式下容器内服务端口会与主机端口直接冲突,需确保端口不重复。

2. 固定UiAutomator2端口并映射到容器

  • 先在测试代码中指定UiAutomator2使用固定端口(以Python为例):
from uiautomator2 import Device
d = Device("your-device-serial")
d.uiautomator_port = 6790  # 设置固定端口,可自定义
  • 启动容器时添加端口映射:
docker run -p 6790:6790 -e ANDROID_ADB_SERVER_ADDRESS="host.docker.internal" your-test-automation-image

如果需要多个端口,可追加-p 6791:6791等。

3. 配置主机ADB监听所有地址

主机ADB默认仅监听本地回环地址,需修改为监听所有地址,确保容器侧请求能正确转发:

adb kill-server
adb -a nodaemon server start

4. 调整主机防火墙规则

允许容器所在的Docker子网访问UiAutomator2端口(以Linux为例):

sudo ufw allow from 172.17.0.0/16 to any port 6790:6799

Windows/macOS可在系统防火墙设置中添加对应端口的允许规则。

内容的提问来源于stack exchange,提问作者Youssef Ehab

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:16:12