news 2026/9/11 3:08:56

Docker-Android 快速上手:一条命令在 Docker 容器中跑起 Android 模拟器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker-Android 快速上手:一条命令在 Docker 容器中跑起 Android 模拟器

Docker-Android 快速上手:一条命令在 Docker 容器中跑起 Android 模拟器

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

Docker-Android 是一个在 Docker 容器里运行 Android 模拟器的开源方案,内置 noVNC 浏览器画面、录像与 MCP server 支持。它适合 App 开发测试、UI 自动化、CI 流水线这类场景,跑起来后你得到一个能用浏览器直接操作、能用 adb 远程控制的模拟器。

前置准备:先确认两件事

  • 系统已安装 Docker,并确认 CPU 硬件虚拟化已开启(可装 cpu-checker 后执行kvm-ok检查,容器需要用到 /dev/kvm 这个内核虚拟化设备)。
  • 镜像只在 Ubuntu 系宿主上运行,macOS 和 Windows 用户需先准备一台带虚拟化的 Ubuntu 虚拟机。

快速跑通:一条命令跑起模拟器 🚀

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 网页端端口映射出来(noVNC 是把 VNC 画面转成网页的技术)。
  • -e EMULATOR_DEVICE:指定设备型号。镜像内置 12 个设备:Samsung Galaxy S6~S10、Nexus 4/5/One/S、Nexus 7、Pixel C。
  • -e WEB_VNC=true:启用 Web VNC,让浏览器能打开模拟器画面。
  • --device /dev/kvm:把宿主机 KVM 虚拟化设备传进容器,缺了它模拟器会极慢甚至起不来。
  • 末尾镜像标签:emulator_9.0emulator_14.0共 6 个版本,对应 Android 9~14。

执行后在浏览器打开http://localhost:6080/?autoconnect=true,你会直接看到模拟器的系统桌面。

结构拆解:各模块负责什么

路径职责何时修改
docker/base、emulator、genymotion 三种镜像的 Dockerfile想定制镜像(预装组件)时
mixins/设备皮肤、显示背景、supervisord 进程配置、容器入口脚本 run.sh换设备皮肤或调整容器内进程时
cli/Python 命令行工具,负责启动模拟器、对接 Genymotion扩展自动化脚本时
documentations/用例文档:Appium、SMS、Jenkins、云部署等深入进阶场景前先看
app.sh镜像构建 / 测试 / 推送脚本仅自维护镜像时需要

参数速查:常用环境变量

配置项默认值作用示例
EMULATOR_DEVICE指定设备型号"Samsung Galaxy S10"
WEB_VNC开启浏览器 VNC(端口 6080)true
WEB_VNC_PORT6080自定义 Web VNC 端口6081
VNC_PASSWORD给 VNC 连接加密码thisissecret
EMULATOR_NAME设备名+安卓版本自定义模拟器名称my_emu
EMULATOR_DATA_PARTITION550m数据分区大小900m
APPIUM容器内启动 Appium 服务(端口 4723)true
WEB_LOG网页查看容器日志(端口 9000)true

数据持久化单独说:默认容器重启后模拟设备会被清空,加-v data:/home/androidusr挂卷即可保留。更多高级配置(额外模拟器参数、配置文件覆盖)入口在 documentations/CUSTOM_CONFIGURATIONS.md。

验证与避坑:确认模拟器跑起来了

验证方法有两步:

  1. 浏览器打开http://localhost:6080能看到模拟器界面。
  2. 执行docker exec -it android-container cat device_status查看模拟器状态。

新手最常踩的 4 个坑:

  1. 启动极慢或白屏:多半是 /dev/kvm 没传进容器,先用kvm-ok确认硬件虚拟化可用。
  2. 重启后装好的 App 不见了:没挂数据卷,补上-v data:/home/androidusr
  3. 6080 打不开:-p 6080:6080-e WEB_VNC=true必须同时存在,缺一个网页端就不工作。
  4. 宿主机连不上 adb:容器暴露了 5555/5554 端口,映射后在宿主机执行adb connect 容器IP:5555即可远程控制。

收尾

Docker-Android 把 Android 模拟器收敛成一条docker run,特别适合测试环境和流水线复用。下一步可以翻 documentations/ 里的 Appium UI 测试、SMS 模拟、Jenkins 集成和云部署用例,按需深入配置。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 3:06:11

PSO-RF粒子群优化随机森林时间序列预测与MATLAB实现

上个月做风速预测项目,我拿随机森林单独跑,验证集RMSE一直卡在2.1左右,不论怎么微调都觉得不顺手。后来换成粒子群优化随机森林(PSO-RF)自动搜超参数,验证集RMSE直接降到1.7,测试集也跟着掉了十…

作者头像 李华
网站建设 2026/9/11 3:00:09

TradingAgents-CN 仪表台市场快讯显示为空的排查与修复实战指南

TradingAgents-CN 仪表台市场快讯显示为空的排查与修复实战指南 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 本指南完整还原了 TradingAgents-…

作者头像 李华
网站建设 2026/9/11 2:55:12

YOLOv8棉花识别实战:结构解析、训练调参与C++部署

简介:面向目标检测学习者的YOLOv8棉花识别项目代码包,聚焦农业场景下的棉花检测,适合具备一定深度学习基础并希望快速上手YOLOv8训练与部署的开发者。包内共475个文件,压缩包大小约35.44MB,主要包含130个Python训练脚本…

作者头像 李华
网站建设 2026/9/11 2:55:08

ArduPilot 抗干扰布线指南:让信号干扰不再困扰你的飞控

ArduPilot 抗干扰布线指南:让信号干扰不再困扰你的飞控 【免费下载链接】ardupilot ArduPlane, ArduCopter, ArduRover, ArduSub source 项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot 上周一次试飞,飞控刚离地十秒,航…

作者头像 李华
网站建设 2026/9/11 2:55:04

零售数据分析:识别未交易顾客的技术方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 2:52:43

YooAsset深度解析:Unity工业级热更新资源管理方案

1. 这不是又一个AssetBundle封装库——YooAsset到底在解决什么问题?YooAsset这个词最近在Unity中型以上项目组里出现频率越来越高,尤其当你开始认真考虑热更新、资源分包、AB依赖管理这些事的时候。它不是Unity官方的Addressables,也不是简单…

作者头像 李华