news 2026/9/11 15:45:09

手把手完整教程:用 Docker 跑安卓模拟器,浏览器里直接操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手完整教程:用 Docker 跑安卓模拟器,浏览器里直接操作

手把手完整教程:用 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 设备检查

  1. 宿主机已装 Docker。跑docker --version能输出版本号即可;没装的话,按 Docker 官方文档安装 Docker Engine
  2. 系统支持硬件虚拟化,且/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),仅供参考

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

基于AD5293数字电位器与PIC18F46K22的可编程电阻校准工装设计

去年我帮一条仪表产线做老化校准工装,客户原本的流程是每台设备装一个3296多圈电位器,工人拿螺丝刀调到目标电压,再滴一滴硅胶固定。这套流程放到量产线上问题一堆:电位器转轴有回差,手一抖就是几十欧姆;硅…

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

MySQL索引核心:聚簇索引、非聚簇索引与回表机制一文讲透

/* 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 15:42:34

MicroPython存储底层原理:VFS、FatFS与LittleFS全解析

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

作者头像 李华