Loading... # Docker-Android 容器化 Android 模拟器完全指南 # 一、概述 ## 1. 简介 ### A. 是什么 Docker-Android 是一个将 Android 模拟器容器化的开源解决方案,支持通过 noVNC 在浏览器中访问和控制 Android 设备。该项目提供了完整的 Docker 镜像,可用于应用开发、测试和自动化场景。 ### B. 为什么选择 传统的 Android 开发和测试面临以下问题: - 需要在本地安装 Android SDK 和模拟器 - 模拟器占用大量系统资源 - CI/CD 环境中难以集成图形化测试 - 多设备测试需要多台物理设备 Docker-Android 通过容器化技术解决了这些问题: - 开发环境隔离,不影响主机系统 - 支持并行运行多个模拟器实例 - 可轻松集成到 Jenkins 等 CI/CD 流程 - 通过 noVNC 实现远程访问 ### C. 可以做什么 - 应用程序开发和测试(原生、Web 和混合应用) - 使用 Appium、Espresso 等框架进行 UI 自动化测试 - 构建 Android 项目 - 通过 ADB 连接从容器外部控制模拟器 - 部署到云平台(AWS、GCP、Azure) - 与 Genymotion Cloud 集成 ## 2. 项目数据 - GitHub Stars:14.3k+ - Fork 数量:1.6k+ - 贡献者:52 人 - 支持语言:Python 92.1%、Shell 7.9% - 最新版本:v3.2.0-p0(2026 年 1 月发布) # 二、支持的 Android 版本 ## 1. Docker 镜像列表 | Android 版本 | API 级别 | 最新版本镜像 | 指定版本镜像 | |-------------|----------|-------------|-------------| | 9.0 | 28 | budtmo/docker-android:emulator_9.0 | budtmo/docker-android:emulator_9.0_<version> | | 10.0 | 29 | budtmo/docker-android:emulator_10.0 | budtmo/docker-android:emulator_10.0_<version> | | 11.0 | 30 | budtmo/docker-android:emulator_11.0 | budtmo/docker-android:emulator_11.0_<version> | | 12.0 | 32 | budtmo/docker-android:emulator_12.0 | budtmo/docker-android:emulator_12.0_<version> | | 13.0 | 33 | budtmo/docker-android:emulator_13.0 | budtmo/docker-android:emulator_13.0_<version> | | 14.0 | 34 | budtmo/docker-android:emulator_14.0 | budtmo/docker-android:emulator_14.0_<version> | | - | - | budtmo/docker-android:genymotion | budtmo/docker-android:genymotion_<version> | ## 2. 支持的设备型号 ### A. 手机设备 - Samsung Galaxy S10 - Samsung Galaxy S9 - Samsung Galaxy S8 - Samsung Galaxy S7 Edge - Samsung Galaxy S7 - Samsung Galaxy S6 - Nexus 4 - Nexus 5 - Nexus One - Nexus S ### B. 平板设备 - Nexus 7 - Pixel C # 三、系统要求 ## 1. 硬件要求 - 支持 KVM 虚拟化 - 足够的内存(建议每个模拟器实例至少 2GB) - 足够的磁盘空间(每个镜像约 5-10GB) ## 2. 软件要求 ### A. 操作系统 - Ubuntu Linux(原生支持) - macOS/Windows:需要运行支持虚拟化的 Ubuntu 虚拟机 ### B. 虚拟化检查 ```bash # 安装虚拟化检查工具 sudo apt install cpu-checker kvm-ok # 检查 KVM 是否启用 kvm-ok ``` # 四、快速开始 ## 1. 基本使用 ```mermaid graph LR A[宿主机] -->|Docker run| B[容器] B -->|KVM加速| C[Android模拟器] B -->|noVNC| D[浏览器] E[ADB客户端] -->|adb connect| B ```  ### A. 启动容器 ```bash 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 ``` **参数说明**: - -p 6080:6080:映射 noVNC 端口 - -e EMULATOR_DEVICE:指定设备型号 - -e WEB_VNC=true:启用 Web VNC 访问 - --device /dev/kvm:传递 KVM 设备以启用硬件加速 ### B. 访问模拟器 打开浏览器访问 http://localhost:6080,即可看到 Android 模拟器界面。 ### C. 检查状态 ```bash docker exec -it android-container cat device_status ``` ## 2. 数据持久化 默认情况下,容器重启会销毁模拟器数据。要持久化数据,需要挂载卷: ```bash docker run -d \ -p 6080:6080 \ -e EMULATOR_DEVICE="Samsung Galaxy S10" \ -e WEB_VNC=true \ --device /dev/kvm \ -v data:/home/androidusr \ --name android-container \ budtmo/docker-android:emulator_11.0 ``` ## 3. WSL2 硬件加速(Windows 11) ```mermaid sequenceDiagram participant U as 用户 participant W as WSL2 participant D as Docker participant A as Android容器 U->>W: 1. 添加用户到 kvm 组 U->>W: 2. 配置 /etc/wsl.conf U->>W: 3. 配置 .wslconfig U->>W: 4. 重启 WSL2 W->>D: 5. 启动 Docker D->>A: 6. 运行容器(带KVM) ```  ### A. 配置步骤 #### 步骤 1:添加用户到 kvm 组 ```bash sudo usermod -a -G kvm ${USER} ``` #### 步骤 2:配置 /etc/wsl.conf ```bash sudo nano /etc/wsl.conf ``` 添加以下内容: ```ini [boot] command = /bin/bash -c 'chown -v root:kvm /dev/kvm && chmod 660 /dev/kvm' ``` #### 步骤 3:配置 .wslconfig 在 Windows PowerShell 中执行: ```powershell notepad $env:USERPROFILE\.wslconfig ``` 添加以下内容: ```ini [wsl2] nestedVirtualization=true ``` #### 步骤 4:重启 WSL2 ```cmd wsl --shutdown ``` # 五、使用场景 ## 1. 应用程序测试 ### A. Appium UI 测试 Docker-Android 可以与 Appium 集成,实现移动应用的自动化 UI 测试。支持: - 自动安装 APK - 元素定位和交互 - 截图和录制 - 并行测试 ### B. Espresso 测试 支持运行 Android Espresso 单元测试和 UI 测试。 ## 2. CI/CD 集成 ### A. Jenkins 集成 可以在 Jenkins Pipeline 中启动 Docker-Android 容器,运行测试后自动销毁。 ### B. 云平台部署 支持部署到: - AWS(Amazon Web Services) - GCP(Google Cloud Platform) - Azure - 阿里云 ## 3. ADB 远程控制 可以从宿主机或其他网络位置通过 ADB 连接到容器中的模拟器: ```bash # 获取容器 IP docker inspect android-container | grep IPAddress # 通过 ADB 连接 adb connect <容器_IP>:5555 ``` ## 4. 日志共享 支持通过 Web UI 访问所有系统日志,方便调试和分析。 ## 5. Genymotion 集成 对于没有资源维护模拟器或需要购买设备的场景,可以使用 Genymotion SAAS 服务。Docker-Android 已与 Genymotion 集成,支持在多个云服务上运行。 # 六、高级配置 ## 1. 环境变量 项目支持多种环境变量进行自定义配置: | 变量名 | 说明 | 默认值 | |-------|------|-------| | EMULATOR_DEVICE | 设备型号 | - | | WEB_VNC | 启用 Web VNC | false | | EMULATOR_API_LEVEL | Android API 级别 | - | 更多配置选项请参考项目的 CUSTOM_CONFIGURATIONS.md 文档。 ## 2. 多容器运行 可以同时运行多个不同版本的 Android 容器: ```bash # Android 11.0 docker run -d -p 6080:6080 --name android-11 budtmo/docker-android:emulator_11.0 # Android 12.0 docker run -d -p 6081:6080 --name android-12 budtmo/docker-android:emulator_12.0 # Android 13.0 docker run -d -p 6082:6080 --name android-13 budtmo/docker-android:emulator_13.0 ``` # 七、Pro 版本 项目提供了基于赞助的 Pro 版本,包含更多高级功能: ## 1. 功能对比 | 功能 | 标准版 | Pro 版 | |-----|-------|--------| | 用户行为分析 | 是 | 否 | | 代理支持 | 否 | 是 | | 语言设置 | 否 | 是 | | 更新 Android 版本 | 否 | 是(Android 15、16 等) | | Root 权限 | 否 | 是 | | 无头模式 | 否 | 是 | | Selenium 4.x 集成 | 否 | 是 | | 多模拟器单容器 | 否 | 是(即将推出) | | Google Play Store | 否 | 是(即将推出) | | 视频录制 | 否 | 是(即将推出) | ## 2. 获取方式 Pro 版本仅供活跃赞助者使用。访问 GitHub Sponsors 页面成为赞助者后,即可拉取 Pro 版本的 Docker 镜像。 # 八、故障排查 ## 1. 虚拟化未启用 如果遇到虚拟化相关的错误: ```bash # 检查 KVM 状态 kvm-ok # 如果报告 KVM 未启用,需要在 BIOS 中启用 VT-x/AMD-V ``` ## 2. 容器启动失败 检查以下几点: - 确保传递了 /dev/kvm 设备 - 检查端口是否被占用 - 查看容器日志 ```bash docker logs android-container ``` ## 3. 性能问题 - 确保 KVM 硬件加速已启用 - 为容器分配足够的内存 - 使用无头模式(Pro 版本) # 九、项目生态 ## 1. 相关项目 - docker-android-pro:高级功能版本 - docker-android-cli:命令行工具 ## 2. 社区支持 - GitHub Issues:问题报告和功能请求 - Gitter:实时聊天和讨论 - 贡献指南:欢迎提交 PR # 十、总结 Docker-Android 是一个功能强大的 Android 容器化解决方案,特别适合以下场景: - 自动化测试环境 - CI/CD 流程集成 - 多设备并行测试 - 云端设备农场 通过结合 Docker 和 Android 模拟器,该项目为移动开发和测试提供了灵活、可扩展的基础设施。 *** ## 参考资料 1. [Docker-Android GitHub Repository](https://github.com/budtmo/docker-android) 2. [Docker-Android Documentation](https://github.com/budtmo/docker-android/tree/master/documentations) 3. [Genymotion Cloud](https://www.genymotion.com/cloud/) 最后修改:2026 年 02 月 13 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏