Docker 运行 Android 模拟器

用 Docker Compose 跑一个 Android 模拟器(可远程访问),首先说明一个现实情况:

👉 Android 模拟器在 Docker 里性能依赖 KVM 虚拟化,如果你的机器不支持(比如很多云服务器 / Windows 没开 WSL2 + 虚拟化),会非常卡甚至跑不起来。


✅ 方案一:推荐(带 Web 远程界面)

使用 budtmo/docker-android(最成熟)


🧱 1. 前置条件

Linux / WSL2 必须支持 KVM

复制代码
egrep -c '(vmx|svm)' /proc/cpuinfo

如果输出 >0 才行

并且:

复制代码
ls /dev/kvm

📦 2. docker-compose.yml(完整)

复制代码
version: "3.8"

services:
  android:
    image: budtmo/docker-android:emulator_11.0
    container_name: android_emulator
    privileged: true
    devices:
      - /dev/kvm:/dev/kvm
    ports:
      - "6080:6080"   # Web VNC
      - "5554:5554"   # emulator
      - "5555:5555"   # adb
    environment:
      - DEVICE=Samsung Galaxy S10
      - ANDROID_VERSION=11.0
      - EMULATOR_GPU=swiftshader_indirect
    restart: unless-stopped

🚀 3. 启动

复制代码
docker-compose up -d

🌐 4. 使用方式

打开浏览器:

复制代码
http://localhost:6080

👉 就能看到 Android 模拟器界面(网页版)


🔌 5. ADB 连接

复制代码
adb connect localhost:5555
adb devices

✅ 方案二:更轻量(无 GUI,适合自动化)

如果你只是跑 App / 自动化测试:

复制代码
version: "3.8"

services:
  android:
    image: us-docker.pkg.dev/android-emulator-268719/images/30-google-x64:latest
    devices:
      - /dev/kvm
    ports:
      - "8554:8554"
      - "5555:5555"
    environment:
      - ADBKEY=your_adb_key
    stdin_open: true
    tty: true

⚠️ 常见坑(非常重要)

❌ 1. Windows 直接 Docker Desktop 不行

👉 必须:

  • 开启 BIOS 虚拟化(Intel VT-x / AMD-V)

  • 使用 WSL2

  • 并且 WSL2 支持 /dev/kvm(默认不支持)

👉 推荐做法:

  • 用 Linux(Ubuntu)最稳

❌ 2. 云服务器基本跑不了

  • AWS / 阿里云 / 腾讯云:大多数实例 没有 KVM

  • 需要裸金属(Bare Metal)才行


❌ 3. Mac(尤其 M1/M2)

👉 基本不可行(ARM + 无 KVM)


🧠 优化建议

提升性能

复制代码
environment:
  - EMULATOR_GPU=host
  - RAM_SIZE=4096

多实例

复制代码
container_name: android_emulator_1
ports:
  - "6081:6080"

📌 总结

方案 是否推荐 用途
budtmo/docker-android ⭐⭐⭐⭐⭐ 可视化开发
google emulator image ⭐⭐⭐ 自动化测试
云服务器跑 ❌ 不推荐
Windows 原生 Docker ⚠️ 很容易失败

👉 其它扩展支持

  • ✅ Docker Android + Appium 自动化测试

  • ✅ 多实例 Android 集群(类似云手机)

  • ✅ 远程公网访问(带 Nginx / HTTPS)

  • ✅ 接入你的 OpenClaw / AI 自动操作手机 🤖


相关推荐
三少爷的鞋3 小时前
AI 时代,我们都将成为通才型开发者:只懂 Android,已经不够了
android
guo_wen_qiang3 小时前
docker的备份与迁移
运维·docker·容器
小小龙学IT5 小时前
Kubernetes 深度实践:架构、API 与避坑指南
容器·架构·kubernetes
Dovis(誓平步青云)6 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
cpolar技术支持7 小时前
外网测试机的异常传不回内网?自托管 Sentry,用 cpolar 打通错误上报链路
python·nginx·docker·cpolar·sentry
晚风叙码8 小时前
MySQL 数据类型详解:从数值到字符串,一篇讲透
android·mysql·adb
传奇开心果编程9 小时前
【Compose Multiplatform 跨端开发学与练】第3课 布局与组件
android·windows·学习·ui·ios·kotlin·composer
MrSYJ10 小时前
别人再问你路由表是啥,这篇文章摔它脸上
docker·云原生·kubernetes
羑悻11 小时前
穿越Docker内核迷雾:揭秘镜像分层存储的叠加态与卷挂载的多维空间穿梭技术
后端·docker·容器
传奇开心果编程11 小时前
【Compose Multiplatform 跨端开发学与练】第8课 资源管理与主题
android·windows·学习·ios·kotlin·web·composer