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 自动操作手机 🤖
