Dock-Droid - Android в Docker с KVM и полной аппаратной поддержкой

04 авг 2025

Репозиторий давно не обновлялся

Последнее обновление было 4 года назад.

1,374
112
17
4 года

Running Android x86 & Android ARM in a Docker container

Когда одно устройство Android – это мало

Представьте ситуацию: вам нужно протестировать приложение на нескольких версиях Android, но под рукой только один девайс. Или хотите исследовать поведение вредоносного APK, но не рискуете запускать его на основном смартфоне. А может, требуется CI/CD окружение для Android-билдов?

Именно эти проблемы решает Dock-Droid – проект, который позволяет запускать полноценные Android-системы в Docker-контейнерах с аппаратной виртуализацией через KVM.

Что может Dock-Droid?

Основные возможности проекта впечатляют:

  • Полноценный Android x86/ARM в контейнере (поддерживаются образы BlissOS и другие)
  • Аппаратное ускорение через KVM (или эмуляцию без KVM)
  • Интеграция с хост-системой:
    • Переадресация X11 для графического интерфейса
    • Доступ через ADB (порт 5555)
    • SSH-доступ (порт 50922)
    • Передача веб-камеры и аудиоустройств
    • Поддержка GPU passthrough
  • Гибкость: можно использовать готовые образы или свои собственные

Как это работает технически?

Под капотом Dock-Droid использует связку:

Реклама
  1. Docker – для изоляции окружения
  2. QEMU – для эмуляции аппаратуры
  3. KVM – для аппаратного ускорения
  4. Android x86 – как гостевую ОС

Такой подход дает несколько преимуществ перед традиционными эмуляторами:

  • Более высокая производительность за счет KVM
  • Лучшая интеграция с хост-системой
  • Возможность легко масштабировать и клонировать окружения
  • Автоматизация через Docker-инструменты

Практическое применение: 5 реальных кейсов

  1. Тестирование приложений – запускайте разные версии Android параллельно
  2. Security research – безопасный анализ подозрительных APK
  3. CI/CD pipeline – автоматизированное тестирование сборок
  4. Разработка под ARM – эмуляция ARM на x86 через Houdini
  5. Демонстрации – быстрый запуск чистого окружения для клиентов

Быстрый старт

Установка выглядит просто (для Ubuntu/Debian):

sudo apt install qemu qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager
sudo systemctl enable --now libvirtd
sudo modprobe kvm

docker run -it \
    --device /dev/kvm \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -e "DISPLAY=${DISPLAY:-:0.0}" \
    -p 5555:5555 \
    sickcodes/dock-droid:latest

Продвинутые сценарии

Запуск без GUI (на сервере)

docker run -it \
    --device /dev/kvm \
    -e EXTRA="-display none -vnc 0.0.0.0:99,password=on" \
    -p 5555:5555 \
    -p 5999:5999 \
    sickcodes/dock-droid:latest

Передача веб-камеры в контейнер

lsusb | grep -i cam  # находим камеру
docker run -it \
    --device /dev/kvm \
    -p 5555:5555 \
    -e EXTRA='-device usb-host,hostbus=3,hostaddr=3' \
    sickcodes/dock-droid:latest

Android WebCam Passthrough

Плюсы и минусы

Плюсы:

  • Лёгкость развёртывания (всё через Docker)
  • Хорошая производительность с KVM
  • Гибкость конфигурации
  • Активное сообщество и разработка

Минусы:

  • Требует включённой виртуализации в BIOS
  • Некоторые функции вроде GPU passthrough требуют тонкой настройки
  • ARM-эмуляция может работать нестабильно

Вывод: кому стоит попробовать?

Dock-Droid – отличное решение для:

  • Мобильных разработчиков, уставших от официального эмулятора
  • DevOps-инженеров, настраивающих CI/CD для Android
  • Security-исследователей, работающих с мобильными угрозами
  • Любого, кому нужно быстро развернуть изолированное Android-окружение

Проект активно развивается и уже собрал более 1200 звезд на GitHub. Если вы работаете с Android – определённо стоит попробовать!

How to Install Bliss OS

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.