Termux — мощная терминальная среда для Android, позволяющая запускать Linux‑утилиты без root‑доступа. Современные задачи разработки и тестирования требуют контейнеризации. В этой статье разберём, как использовать podman и rootless Docker внутри Termux для изолированного запуска приложений.
Подготовка окружения
Обновите пакеты и установите базовые зависимости:
pkg update && pkg upgrade -y
pkg install -y proot-distro git wget curl
Для работы podman и Docker потребуется проот‑окружение. Установим Debian через proot-distro:
proot-distro install debian
proot-distro login debian
Теперь вы внутри Debian‑контейнера в Termux. Далее все команды выполняются там.
Установка Podman (rootless)
Podman изначально работает без демона и не требует root. Установим его:
apt update && apt install -y podman uidmap slirp4netns
# Настройка subuid/subgid для текущего пользователя
echo "$(whoami):100000:65536" | tee /etc/subuid /etc/subgid
# Включение user namespace
sysctl -w kernel.unprivileged_userns_clone=1
Проверка:
podman run --rm alpine echo "Podman works in Termux!"
Установка Rootless Docker
Docker в rootless‑режиме запускает демон от пользователя. Установим через официальный скрипт:
curl -fsSL https://get.docker.com/rootless | sh
# Добавьте в ~/.bashrc или ~/.profile:
export PATH=/home/$(whoami)/bin:$PATH
export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
# Перезапустите сессию или source ~/.bashrc
Запуск демона:
systemctl --user start docker
systemctl --user enable docker
Проверка:
docker run --rm hello-world
Работа с образами и контейнерами
Оба инструмента совместимы с OCI‑образами. Примеры:
- Сборка образа:
podman build -t myapp .илиdocker build -t myapp . - Запуск с пробросом портов (через slirp4netns):
podman run -d -p 8080:80 nginx - Список контейнеров:
podman ps -a/docker ps -a - Удаление:
podman rm -f
Для доступа к контейнерам извне Termux используйте VPN‑туннель (например, WireGuard) для создания локальной сети между устройствами — это позволяет тестировать сервисы на других гаджетах без публичного доступа.
Ограничения и советы
- Файловая система: лучше монтировать тома в
/data/data/com.termux/files/homeдля персистентности. - Производительность: proot добавляет накладные расходы; для тяжёлых задач рассмотрите chroot или виртуализацию.
- Сеть: slirp4netns не поддерживает все режимы; для сложных сетей настройте
pastaили пользовательские CNI‑плагины. - Обновления: следите за версиями podman/Docker в репозиториях Debian — старые версии могут не поддерживать новые фичи.
Заключение
Контейнеризация в Termux с podman и rootless Docker открывает возможности для разработки, CI/CD и тестирования прямо на смартфоне. Podman проще в настройке (нет демона), Docker — привычнее для экосистемы. Выбирайте под задачу.
РыбинскЛАБ оказывает услуги по настройке мобильных DevOps‑сред, аудиту безопасности контейнеров и обучению работе с Termux/Linux на Android. Обращайтесь — поможем собрать эффективный стек под ваши задачи.