Docker-Android 安装与配置:在容器里跑 Android 模拟器的完整指南
【免费下载链接】docker-androidAndroid in docker solution with noVNC supported, video recording and mcp server项目地址: https://gitcode.com/GitHub_Trending/do/docker-android
Docker-Android 把 Android 模拟器打包成 Docker 镜像,一条docker run命令即可在容器内启动带界面的手机环境,并通过 noVNC 网页端直接查看屏幕。它解决了"本地装模拟器太占资源、测试机不够用"的问题,适合做 Android 开发、自动化 UI 测试和 CI 流水线搭建的工程师。
适用场景
- 自动化 UI 测试:跑 Appium、Espresso 等框架时,需要一个干净、可重复、随时销毁重建的 Android 环境,容器比物理设备更好管理。
- 无头服务器上远程调试:公司机房、Jenkins 节点没有图形界面,Docker-Android 通过 6080 端口暴露 noVNC 页面,浏览器打开就能看屏幕、点屏幕。
- 短信、网络等边界情况模拟:想验证收短信、换代理、改语言这类行为,可以在不碰真机的情况下快速搭环境,相关用法见 SMS 模拟文档。
开始前的检查
先确认四项前提,缺一项都会在启动阶段报错:
- Docker 已装好:
docker run --version能正常输出版本号即可。 - 宿主系统:镜像只在 Ubuntu 环境下运行。macOS 和 Windows 用户需要先装一台支持虚拟化的 Ubuntu 虚拟机;Windows 11 用户可走 WSL2 硬件加速路线(需在
/etc/wsl.conf里配置/dev/kvm权限,并在.wslconfig中开启nestedVirtualization=true)。 - 硬件虚拟化已开启:这是最常见的坑。在 Linux 上执行下面两条命令确认:
sudo apt install cpu-checker kvm-ok看到KVM acceleration can be used才算通过。如果显示ERR,去 BIOS 里打开 Intel VT-x 或 AMD-V。
- 权限:当前用户需要能访问
/dev/kvm。WSL2 用户要执行sudo usermod -a -G kvm ${USER}后重启 WSL。
快速启动
以 Android 11 的 Samsung Galaxy S10 镜像为例,按下面三步走。
第 1 步:拉取并启动容器
docker run -d -p 6080:6080 -e EMULATOR_DEVICE="Samsung Galaxy S10" \ -e WEB_VNC=true --device /dev/kvm \ --name android-container budtmo/docker-android:emulator_11.0-d:后台运行;-p 6080:6080:把容器内 noVNC 端口映射到本机;EMULATOR_DEVICE:指定设备外观型号,支持 S6 到 S10、Nexus 4/5/7 等,完整清单见 README 设备列表;WEB_VNC=true:开启网页端 VNC 访问;--device /dev/kvm:把宿主的 KVM 设备透传进容器,没有它会退化为软件模拟,启动会非常慢。
预期结果:命令返回容器 ID 后,等待约 1~3 分钟,浏览器打开http://localhost:6080应能看到模拟器启动过程(黑色背景带绿色 ANDROID 字样),随后进入 Android 桌面。
异常提示:如果页面一直空白,优先检查/dev/kvm是否真的透传成功——执行docker exec android-container ls -l /dev/kvm,无输出或权限拒绝就是 KVM 没配好。
第 2 步:确认模拟器状态
docker exec -it android-container cat device_status输出为device ready说明容器内设备已就绪。
第 3 步:(可选)让数据在重启后保留
默认情况下容器销毁后模拟器的数据全部丢失。需要保留时,在启动命令里加一个卷:
docker run -d -v data:/home/androidusr budtmo/docker-android:emulator_11.0 ...把/home/androidusr挂到命名卷data,后续重启容器数据不会丢。更多持久化、VNC 密码、日志共享等开关,参考 自定义配置文档。
关键参数说明
只列真正影响体验的几项:
| 参数 | 作用 | 建议 |
|---|---|---|
EMULATOR_DEVICE | 设备型号与外观 | 按被测 App 的目标机型选,如"Samsung Galaxy S10" |
WEB_VNC/WEB_VNC_PORT | 网页访问开关与端口 | 多人共用服务器时改端口避免冲突 |
VNC_PASSWORD | 给 VNC 加密码 | 暴露在公网时必加 |
WEB_LOG | 网页端查看容器日志 | 排查问题时开 |
EMULATOR_DATA_PARTITION | 数据分区大小 | 默认 550m,装大包时调大到 900m |
| 镜像 tag | Android 版本 | emulator_9.0到emulator_14.0,按测试目标 API 选 |
验证与常见问题
确认启动成功的两个标志:一是http://localhost:6080能看到模拟器桌面;二是cat device_status输出device ready。两个都满足才算配置完成。
常见问题按出现频率排列:
- 启动极慢或卡黑屏:99% 是 KVM 没生效。跑
kvm-ok复测,确认--device /dev/kvm写在启动命令里。 - 6080 打不开:先确认
-p 6080:6080是否遗漏,再确认WEB_VNC=true是否设置;两者缺一不可,纯 VNC 客户端连 5900 端口则不需要WEB_VNC。 - 重启后数据没了:属预期行为,加
-v data:/home/androidusr卷即可。 - Mac/Windows 上完全跑不起来:这是设计限制,镜像仅支持 Ubuntu,请改用虚拟机或 WSL2 方案。
下一步建议
容器跑起来之后,可以按 使用场景文档 继续:接 Appium 跑 UI 测试、用adb connect从宿主机直接控制模拟器,或接入 Jenkins 做成流水线。若设备种类或云资源不够用,项目还提供 Genymotion 集成的镜像,详见 THIRD_PARTY_GENYMOTION.md。
【免费下载链接】docker-androidAndroid in docker solution with noVNC supported, video recording and mcp server项目地址: https://gitcode.com/GitHub_Trending/do/docker-android
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考