Docker-Android 安装与配置:在容器里跑 Android 模拟器的完整指南
2026/9/11 14:06:16 网站建设 项目流程

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
镜像 tagAndroid 版本emulator_9.0emulator_14.0,按测试目标 API 选

验证与常见问题

确认启动成功的两个标志:一是http://localhost:6080能看到模拟器桌面;二是cat device_status输出device ready。两个都满足才算配置完成。

常见问题按出现频率排列:

  1. 启动极慢或卡黑屏:99% 是 KVM 没生效。跑kvm-ok复测,确认--device /dev/kvm写在启动命令里。
  2. 6080 打不开:先确认-p 6080:6080是否遗漏,再确认WEB_VNC=true是否设置;两者缺一不可,纯 VNC 客户端连 5900 端口则不需要WEB_VNC
  3. 重启后数据没了:属预期行为,加-v data:/home/androidusr卷即可。
  4. 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询