手把手完整教程:用 Docker 跑安卓模拟器,浏览器里直接操作
【免费下载链接】docker-androidAndroid in docker solution with noVNC supported, video recording and mcp server项目地址: https://gitcode.com/GitHub_Trending/do/docker-android
开发机不想装一堆安卓工具链,又想有一台随时可用的安卓模拟器?Docker-Android 把整套安卓环境打成了一个镜像:拉下来就能启动,模拟器界面直接在浏览器里点开操作,十分钟跑通全流程。
哪些场景用得上 Docker 安卓模拟器
- 跑 Appium 之类的 UI 自动化测试,需要一台干净稳定的设备
- 开发机环境太乱、资源不够,装不动本地模拟器
- CI/CD 流水线里每次都要一个全新的安卓环境来构建、测试
- 想模拟收到短信来验证登录流程,但没有真机
容器里装的是哪几样东西
- Docker(容器引擎)—— 把整套安卓环境打包成镜像,一条命令拉起
- KVM(内核虚拟机)—— Linux 内核的虚拟化模块,模拟器靠它做硬件加速
- noVNC(基于 WebSockets 的 VNC 客户端)—— 把模拟器画面输出到浏览器
- ADB(安卓调试桥)—— 安卓系统的命令行控制工具,装应用、抓日志都靠它
- Appium(自动化测试框架)—— 内置在基础镜像里,容器起来就能跑测试
开始前检查清单:Docker 安装与 KVM 设备检查
- 宿主机已装 Docker。跑
docker --version能输出版本号即可;没装的话,按 Docker 官方文档安装 Docker Engine - 系统支持硬件虚拟化,且
/dev/kvm设备可用。用下面命令检查:
sudo apt install cpu-checker kvm-ok输出 "KVM acceleration can be used" 说明通过。不通过的话,进 BIOS 打开 CPU 虚拟化选项 3. 宿主机 6080 端口没被占用。这个端口是 noVNC 的浏览器访问入口,被占了就换个宿主机端口 4. 平台限制:模拟器镜像只能在 Ubuntu 上运行。macOS 用户需要开一台支持虚拟化的 Ubuntu 虚拟机;Windows 11 用户可在 WSL2 里开启嵌套虚拟化,具体步骤见仓库根目录 README.md 的 WSL2 章节
从零跑起来:一键启动命令
第 1 步 启动安卓模拟器容器
做什么:拉取 Android 11 镜像并后台启动容器。
# -d 后台运行 # -p 6080:6080 noVNC 网页访问端口 # -e 选择设备型号并开启浏览器访问 # --device /dev/kvm 传入虚拟化设备 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执行后你应该看到:首次运行会下载镜像,稍等片刻后用docker ps能看到容器处于 Up 状态。
⚠️ 提示:6080 被占用就改成
-p 6081:6080,宿主机端口可以换,容器端口 6080 不能动。漏掉--device /dev/kvm也能启动,但会慢到没法用。
第 2 步 浏览器验证模拟器已跑起来
做什么:浏览器打开http://localhost:6080。
预期结果:首次启动约需一分钟,随后页面里出现模拟器的安卓桌面,直接可以点按、滑动,就像操作一台真机。
💡 提示:设备型号支持 Samsung Galaxy S6/S7/S7 Edge/S8/S9/S10、Nexus 4/5/One/S/7 等 11 种,改
EMULATOR_DEVICE的值即可,比如填 "Nexus 5"。
第 3 步 配置容器数据持久化
做什么:默认情况下重建容器,模拟器里装的应用和数据全部清零。要保留数据,挂一个 Docker 卷。
docker run -d -p 6080:6080 -v data:/home/androidusr \ -e EMULATOR_DEVICE="Samsung Galaxy S10" -e WEB_VNC=true \ --device /dev/kvm --name android-container \ budtmo/docker-android:emulator_11.0原理一句话:data卷由 Docker 存在宿主机磁盘上,容器重建后/home/androidusr下的系统镜像原样复用,设备数据不丢。
验证与常用操作:查看安卓模拟器启动状态
启动后最常用的三条命令:
docker exec -it android-container cat device_status这条命令查看模拟器启动状态,输出 BOOTED 表示系统已就绪,否则说明还没起来。
docker logs android-container这条命令输出容器启动日志,画面卡住、状态不对时,先来这里定位问题。
另外,宿主机装好 ADB 后可以用adb connect直连容器里的模拟器接管控制,方法见 在宿主机上控制安卓模拟器。
新手最容易卡住的几个点
- 打开浏览器黑屏 —— 多数是模拟器还没启动完,或者 KVM 没生效。先跑 device_status 确认状态,不是 BOOTED 就回头重查 kvm-ok 的结果
- 模拟器卡得厉害、风扇狂转 —— 启动时忘了加
--device /dev/kvm,回退到了纯软件模拟。停掉容器带上这个参数重跑 - 页面打不开 —— 宿主机 6080 端口被别的进程占了,用
ss -lntp查一下占用,把映射的宿主机端口换个空闲的 - 容器一重启,设备就变回出厂状态 —— 没挂卷。不带
-v data:/home/androidusr的话,每次都是全新设备
接下来可以试试
- 接上 Appium 写自动化脚本:Appium 做 UI-Test
- 开启日志共享、录像等特性:自定义配置文档
【免费下载链接】docker-androidAndroid in docker solution with noVNC supported, video recording and mcp server项目地址: https://gitcode.com/GitHub_Trending/do/docker-android
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考