Docker-Android 快速上手指南:一条命令拉起容器化 Android 模拟器
2026/9/11 1:34:32 网站建设 项目流程

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就能在服务器上开出 Galaxy S10、Nexus 7 等真机外观的模拟器,支持 noVNC 网页查看、Appium UI 测试和 adb 外部控制。适合需要无头环境跑安卓测试、CI 集成或演示的测试工程师、DevOps 和移动端开发者。

二、它解决什么问题

  • 本机装 Android Studio + 模拟器,占几 GB 磁盘,还得跟 IDE 抢 CPU 和 GPU。
  • CI 机器上想跑 UI 自动化,却发现 CI 是 Linux 裸机,装模拟器环境又慢又不稳。
  • 多台设备、多版本并行测试时,本机根本开不起。

Docker-Android 的做法是:模拟器 + Android SDK + noVNC + adb 全部预装在镜像里,按 Android 版本区分 tag(9.0 到 14.0),拉下来即用,跑完删掉不占地方。

三、开始前需要准备什么

硬件和系统要求如下,提前确认可以省掉后面大量排错时间:

项目要求说明
操作系统Ubuntu(Linux)镜像基于 Ubuntu 构建,只保证在 Ubuntu 宿主上运行
虚拟化CPU 支持 KVM 且已开启容器内模拟器靠硬件加速跑,没有 KVM 基本起不来
Docker已安装并可正常使用docker run无需其他依赖
macOS / Windows需要套一层 Ubuntu 虚拟机官方镜像不支持直接在 Mac/Windows 上跑

验证 KVM 是否可用:

sudo apt install cpu-checker kvm-ok

输出KVM acceleration can be used才算通过。

四、最短路径跑起来

一条命令启动 Android 11.0 + Samsung Galaxy S10 模拟器:

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 的 6080 端口映射出来,供浏览器访问。
  • -e EMULATOR_DEVICE="Samsung Galaxy S10":指定设备型号和外观皮肤,支持 S10/S9/S8/S7/S6、Nexus 4/5/7/One/S、Pixel C 等。
  • -e WEB_VNC=true:启用网页端查看,不开就只能用 VNC 客户端连 5900 端口。
  • --device /dev/kvm:把宿主机的 KVM 设备透传进容器,硬件加速的关键。
  • --name android-container:给容器起名,后面docker execdocker stop都靠它。
  • budtmo/docker-android:emulator_11.0:镜像 tag,按 Android 版本选,emulator_9.0emulator_14.0都有。

镜像里预置了这些设备型号的皮肤文件,位于 mixins/configs/devices/,EMULATOR_DEVICE的值必须和列表里的名字完全一致。

等 1~2 分钟(首次启动模拟器较慢),浏览器打开http://localhost:6080,你会看到模拟器桌面上立着一台 Galaxy S10,能点能滑。

随时查启动进度:

docker exec -it android-container cat device_status

状态变成boot_completed即代表安卓系统启动完成。

五、常用配置速查

核心开关都是环境变量,完整清单见 CUSTOM_CONFIGURATIONS.md。

VNC / 网页访问

变量作用示例
WEB_VNC是否开启网页端(默认端口 6080)-e WEB_VNC=true
WEB_VNC_PORT改 noVNC 端口-e WEB_VNC_PORT=6081配合-p 6081:6081
VNC_PASSWORD给 VNC 连接加密码-e VNC_PASSWORD=thisissecret

URL 上还能加参数:http://localhost:6080/?autoconnect=true&view_only=true可直接自动连接并设为只读,方便给别人看。

模拟器本体

变量作用默认值
EMULATOR_NAME自定义模拟器名字设备名 + 安卓版本
EMULATOR_DATA_PARTITION数据分区大小550m,装 app 多就调大,如900m
EMULATOR_NO_SKIN去掉设备外壳皮肤,省一点渲染开销false
EMULATOR_ADDITIONAL_ARGS透传任意参数给 android emulator 命令行见 Android 官方文档

日志与测试

变量作用
WEB_LOG/WEB_LOG_PORT通过网页 UI 看容器内日志文件,默认端口 9000
APPIUM/APPIUM_ADDITIONAL_ARGS开启 Appium Server(开 4723 端口),参数可透传

数据持久化

默认行为是容器重启后模拟器数据清空。需要保留装的 app、账号等状态时,把数据目录挂成命名卷:

docker run -v data:/home/androidusr budtmo/docker-android:emulator_11.0

六、跑起来之后能干什么

  • adb 外部控制:启动时加-p 5554:5554 -p 5555:5555,宿主机执行adb connect <容器IP>:5555即可把容器内模拟器当成 adb 设备,装 apk、抓日志、发消息全都能做。细节见 USE_CASE_CONTROL_EMULATOR.md。
  • 模拟短信docker exec -it android-container adb emu sms send <号码> <消息>,做 OTP 验证测试很方便。见 USE_CASE_SMS.md。

  • CI 集成:Jenkins / 云主机上无头跑,见 USE_CASE_JENKINS.md 和 USE_CASE_CLOUD.md。
  • Appium UI 测试:加-p 4723:4723 -e APPIUM=true即可,见 USE_CASE_APPIUM.md。

七、容易踩的坑

坑 1:容器起不来 / 模拟器卡在启动。九成是 KVM 没透传。先跑kvm-ok确认宿主机支持,再确认docker run带了--device /dev/kvm。Windows 用户在 WSL2 里还需要额外配置(把用户加进kvm组、在.wslconfignestedVirtualization=true),README 的 "WSL2 Hardware acceleration" 一节有完整步骤。

坑 2:浏览器打不开localhost:6080端口映射漏了或端口被占。确认启动命令里有-p 6080:6080;端口冲突就换WEB_VNC_PORT一起改,两边保持一致。另外WEB_VNC=true忘了设的话,网页入口根本不存在。

坑 3:重启容器后 app 全没了。这是默认设计(每次全新设备),不是 bug。要么接受"跑完即焚",要么按上面"数据持久化"一节挂卷到/home/androidusr

坑 4:装了几个稍大的 app 就 OOM 或分区满。默认数据分区只有 550m,用EMULATOR_DATA_PARTITION=900m调大即可。

延伸阅读

仓库内文档都在 documentations/ 目录,按使用场景组织:

  • USE_CASE_BUILD_ANDROID_PROJECT.md:用镜像编译安卓工程
  • USE_CASE_APPIUM.md:Appium 自动化测试接入
  • USE_CASE_CLOUD.md:部署到 Azure / AWS / GCP
  • DOCKER-ANDROID-PRO.md:Pro 版功能对比(代理、root、headless 等)
  • CUSTOM_CONFIGURATIONS.md:全部可配环境变量与 URL 端点

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

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

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

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

立即咨询