Dock-Droid - Android в Docker с KVM и полной аппаратной поддержкой
Репозиторий давно не обновлялся
Последнее обновление было 4 года назад.

Когда одно устройство 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 использует связку:
- Docker – для изоляции окружения
- QEMU – для эмуляции аппаратуры
- KVM – для аппаратного ускорения
- Android x86 – как гостевую ОС
Такой подход дает несколько преимуществ перед традиционными эмуляторами:
- Более высокая производительность за счет KVM
- Лучшая интеграция с хост-системой
- Возможность легко масштабировать и клонировать окружения
- Автоматизация через Docker-инструменты
Практическое применение: 5 реальных кейсов
- Тестирование приложений – запускайте разные версии Android параллельно
- Security research – безопасный анализ подозрительных APK
- CI/CD pipeline – автоматизированное тестирование сборок
- Разработка под ARM – эмуляция ARM на x86 через Houdini
- Демонстрации – быстрый запуск чистого окружения для клиентов
Быстрый старт
Установка выглядит просто (для 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

Плюсы и минусы
Плюсы:
- Лёгкость развёртывания (всё через Docker)
- Хорошая производительность с KVM
- Гибкость конфигурации
- Активное сообщество и разработка
Минусы:
- Требует включённой виртуализации в BIOS
- Некоторые функции вроде GPU passthrough требуют тонкой настройки
- ARM-эмуляция может работать нестабильно
Вывод: кому стоит попробовать?
Dock-Droid – отличное решение для:
- Мобильных разработчиков, уставших от официального эмулятора
- DevOps-инженеров, настраивающих CI/CD для Android
- Security-исследователей, работающих с мобильными угрозами
- Любого, кому нужно быстро развернуть изолированное Android-окружение
Проект активно развивается и уже собрал более 1200 звезд на GitHub. Если вы работаете с Android – определённо стоит попробовать!

