Termux – это терминальное приложение для Android, которое предоставляет полноценную Linux‑среду без root‑прав. Благодаря поддержке пакетов из репозитория APT и возможности запускать chroot‑подсистемы, Termux открывает путь к использованию современных DevOps‑инструментов, в том числе Docker.
Установка Termux и базовых инструментов
Для начала установим Termux из Google Play или F-Droid, а затем обновим репозитории:
pkg update && pkg upgrade -y
Установим необходимые пакеты:
pkg install proot-distro wget curl tar -y
Развёртывание полноценного дистрибутива Linux
Docker требует ядра Linux с поддержкой cgroups. На Android это ограничено, поэтому мы используем proot-distro для запуска пользовательского дистрибутива (например, Debian Bullseye) в режиме user‑space.
proot-distro install debian
Запускаем окружение:
proot-distro login debian
Установка Docker внутри Debian
После входа в Debian обновляем пакеты и добавляем официальные репозитории Docker:
apt update && apt upgrade -y
apt install apt-transport-https ca-certificates gnupg lsb-release -y
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install docker.io -y
Поскольку у нас нет доступа к системному демону, запускаем Docker в режиме «rootless»:
dockerd-rootless-setuptool.sh install
После установки добавляем переменные окружения (можно добавить в ~/.bashrc):
export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
export PATH=$HOME/bin:$PATH
Проверка работоспособности
Запускаем демон и проверяем статус:
systemctl --user start docker
docker info
Если всё настроено правильно, вы увидите информацию о Docker‑демоне, запущенном в пользовательском пространстве.
Создание и управление контейнерами
Теперь можно использовать привычные команды Docker. Пример запуска контейнера nginx:
docker run -d -p 8080:80 --name webserver nginx
Проверим, что контейнер работает:
docker ps
Для получения доступа к веб‑серверу откройте в браузере http://127.0.0.1:8080. В Termux доступ к localhost пробрасывается напрямую, поэтому вы сможете увидеть страницу Nginx.
Управление образами и контейнерами
Список доступных образов:
docker images
Остановить контейнер:
docker stop webserver
Удалить контейнер и образ:
docker rm webserver
docker rmi nginx
Автоматизация с Docker Compose
Для более сложных сценариев удобно установить docker-compose:
apt install docker-compose -y
Создадим файл docker-compose.yml в домашней директории Termux:
cat > docker-compose.yml <<'EOF'
version: "3.8"
services:
db:
image: postgres:13
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: secret
api:
image: node:14
depends_on:
- db
command: node -e "console.log('API started')"
EOF
Запустим стек:
docker-compose up -d
Ограничения и рекомендации
- Отсутствие полноценного ядра: Docker работает в режиме rootless, поэтому некоторые функции (например, сетевые драйверы типа
hostилиmacvlan) недоступны. - Потребление ресурсов: Android‑устройства имеют ограниченный RAM и CPU; рекомендуется ограничивать количество одновременно запущенных контейнеров.
- Хранение данных: По умолчанию файлы контейнеров находятся в каталоге
/data/data/com.termux/files/home/.local/share/docker. При необходимости перенесите их на внешнюю SD‑карту, создав символьную ссылку. - Обновление Termux: После обновления пакетов иногда требуется переустановить
proot-distroи заново выполнитьdockerd-rootless-setuptool.sh install.
Безопасность
Запуск Docker в пользовательском пространстве изолирует контейнеры от системных привилегий, но всё равно:
- Не запускайте контейнеры от неизвестных образов.
- Ограничьте доступ к сокету Docker через переменную
DOCKER_HOST. - Регулярно обновляйте пакеты внутри Debian и Docker‑образы.
Заключение
Termux открывает возможности полноценного DevOps‑рабочего места прямо на Android‑устройстве. С помощью пользовательского дистрибутива и rootless‑режима Docker можно создавать, тестировать и развёртывать контейнеры без необходимости в отдельном сервере. Это особенно полезно для разработчиков, которым требуется мобильный доступ к CI/CD‑инструментам, а также для тех, кто хочет экспериментировать с микросервисной архитектурой «на ходу».
Если вам требуется более глубокая интеграция, настройка CI‑конвейеров или обучение персонала работе с контейнерами на Android, команда RybinskLab готова помочь. Мы предлагаем консультации, разработку кастомных образов и настройку инфраструктуры под ваши бизнес‑задачи. Обращайтесь к нам, и мы превратим ваш мобильный терминал в мощный инструмент DevOps.