3条命令跑起一个Android容器:Docker-Android实战笔记
2026/9/11 17:03:57 网站建设 项目流程

3条命令跑起一个Android容器:Docker-Android实战笔记

【免费下载链接】docker-androidAndroid in docker solution with noVNC supported, video recording and mcp server项目地址: https://gitcode.com/GitHub_Trending/do/docker-android

周五下午,演示环境的Android模拟器又挂了。重装系统镜像、等SDK同步、再对着KVM模块报错发呆,而demo明天就要演示。后来我把这套环境挪进了Docker-Android:一个把Android模拟器打进镜像的容器方案,内置noVNC网页界面,拉起来开浏览器就能看屏幕,device_status文件随时告诉你模拟器起没起来。

一句话概括它是什么:Docker-Android把Android模拟器、设备皮肤、noVNC服务全装进一个Docker镜像,镜像标签从Android 9排到Android 14,你只需要一台开KVM的Linux机器。容器跑在什么宿主机上,模拟器就长什么样,"在我机器上能跑"不再依赖具体那台机器。

先确认你的机器能不能跑

先花10秒确认门槛,省得后面白折腾。它只支持Ubuntu主机(macOS/Windows得套一层Ubuntu虚机),所以虚拟化检查是硬指标:

门槛要求确认方式
CPU虚拟化开启Intel VT-x或AMD-Vkvm-ok返回"OK"
用户权限当前用户在kvm组ls -l /dev/kvm权限可读写
磁盘空间系统镜像+模拟器数据,预留10GB以上镜像标签覆盖Android 9-14

一条线跑起来

确认完之后你依次做三件事:拉镜像、起容器、看状态。

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

跑完之后浏览器打开http://localhost:6080。第一次启动要多等几分钟,因为容器要下载对应版本的Android系统镜像,之后你会在网页里看到一部手机从开机画面走到桌面——那就是容器里正在跑的真模拟器,不是截图。确认它就绪的办法是docker exec -it android-container cat device_status,看到boot completed或者adb显示device就算起来了。想换Android版本,把标签里的emulator_11.0换成emulator_14.0就行,其余不动。

跑起来之后能干什么

按你要做的测试分三类,每类都对应仓库里的一个场景文档。

兼容性回归:同一批用例,分别对着S10、Nexus 5、Nexus 7起三个容器,设备用EMULATOR_DEVICE指定。UI改动会不会撑爆7寸平板的布局,跑完矩阵自然见分晓。

系统能力模拟:不想手动点开发者选项,就直接adb emu sms send 12345678 "测试消息"往模拟器里灌一条短信,验证应用的收信逻辑。要挂Appium的话,起容器时多开4723端口并传APPIUM=true,Appium Server和模拟器在同一个容器里。

CI流水线集成:在Jenkins里把容器当作一个测试阶段,docker run起容器、跑用例、退出。每次构建拿到的都是全新设备状态,没有上个构建留下的应用和缓存;想留人肉看屏的口子,把6080也映射出来。

从Demo到长期稳定跑

如果你打算把它挂进Jenkins跑一个月,有三件事要提前定下来。

默认行为是容器重启后设备状态销毁,挂卷就能保住:-v android_data:/home/androidusr,之后装过应用、写过的数据都还在。分区大小默认550MB,装应用多了会撑爆,用EMULATOR_DATA_PARTITION=2g调大。ADB要跨机连的话,起容器时映射5554和5555端口,宿主机adb connect <容器IP>:5555即可。资源分配上,给容器限2核CPU、4G内存起步,模拟器流畅度基本够用。

踩坑速查

  • 症状:容器起不来,报/dev/kvm: permission denied原因:当前用户不在kvm组 →修法sudo usermod -aG kvm $USER,登出重登。
  • 症状:宿主机adb connect超时 →原因:起容器时没映射5554/5555 →修法:补上-p 5554:5554 -p 5555:5555重新起。
  • 症状:装应用报存储空间不足,或重启后数据全没 →原因:没挂卷、默认数据分区太小 →修法:加-v xxx:/home/androidusr并调大EMULATOR_DATA_PARTITION

更细的环境变量(比如noVNC加密码、只读模式)都在 documentations/ 里,按场景分成了独立文档。

收尾

Docker-Android的价值就是把"起一台Android设备"从半小时压缩成一条docker run。下一步:翻一下仓库里mixins/configs/devices/profiles/下的设备皮肤配置,挑一台你项目真正要测的机型。

【免费下载链接】docker-androidAndroid in docker solution with noVNC supported, video recording and mcp server项目地址: https://gitcode.com/GitHub_Trending/do/docker-android

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询