We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Контейнеризация микросервисов в Termux с использованием Docker и Podman

Termux – это терминальное приложение для Android, которое предоставляет полноценную Linux‑среду. Благодаря возможности установки пакетов через pkg и запуску дистрибутивов в режиме proot, Termux стал удобной площадкой для разработки, тестирования и даже эксплуатации микросервисов прямо на смартфоне. В этой статье мы рассмотрим, как контейнеризировать микросервисы в Termux, используя два популярных инструмента: Docker и Podman.

Почему контейнеризация на мобильных устройствах?

Контейнеры позволяют изолировать зависимости, гарантировать одинаковое поведение в разных средах и быстро масштабировать отдельные сервисы. На мобильных платформах это особенно ценно, когда требуется:

  • Тестировать микросервисы без доступа к полноценному серверу.
  • Разрабатывать и отлаживать API‑слой непосредственно на устройстве.
  • Экспериментировать с новыми технологиями в изолированном окружении.

Установка Docker в Termux

Docker требует ядро с поддержкой cgroups, чего в Android нет. Поэтому мы используем proot-distro для запуска полноценного дистрибутива Ubuntu, где Docker работает в режиме «rootless».

pkg update && pkg upgrade -y
pkg install proot-distro
proot-distro install ubuntu-20.04
proot-distro login ubuntu-20.04

# внутри Ubuntu
apt update && apt install -y docker.io
systemctl enable docker
systemctl start docker

Команда systemctl start docker start (запускает) демон Docker. По определению, глагол start означает «начинать, приводить в действие» – см. [cambridge.org](https://dictionary.cambridge.org/us/dictionary/english/start), [merriam-webster.com](https://www.merriam-webster.com/dictionary/start), [dictionary.com](https://www.dictionary.com/browse/start), [collinsdictionary.com](https://www.collinsdictionary.com/us/dictionary/english/start).

Установка Podman в Termux

Podman – это «daemonless» альтернатива Docker, которая полностью работает в пользовательском пространстве. Это делает его более совместимым с ограничениями Android.

# Внутри того же Ubuntu, запущенного через proot
apt install -y podman

# Проверка версии
podman --version

# Создание и запуск контейнера без демона
podman run -d --name hello-world alpine echo "Hello from Podman"

Развёртывание микросервиса

Рассмотрим простой микросервис на Node.js. Сначала создаём Dockerfile и docker-compose.yml, затем собираем образ и запускаем его.

# Dockerfile
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["node","server.js"]
# docker-compose.yml
version: "3.8"
services:
  web:
    build: .
    ports:
      - "3000:3000"
    restart: unless-stopped

Сборка и запуск в Docker:

docker compose up -d

Аналогичная команда для Podman (используем совместимый режим):

podman compose up -d

Управление контейнерами

Для базовых операций используем те же команды, что и в настольных системах:

  • docker ps -a / podman ps -a – список всех контейнеров.
  • docker stop <id> / podman stop <id> – остановка.
  • docker rm <id> / podman rm <id> – удаление.
  • docker logs <id> / podman logs <id> – просмотр логов.

Практические рекомендации

  • Rootless режим. Оба инструмента поддерживают работу без привилегий root, что повышает безопасность.
  • Хранилище. По умолчанию образ Docker сохраняется в каталоге /data/data/com.termux/files/home/.local/share/docker. При ограниченном пространстве рекомендуется использовать внешнюю SD‑карту и переместить DOCKER_ROOT.
  • Сетевые ограничения. Android блокирует некоторые порты. Для доступа к сервисам используйте termux-wake-lock и проброс портов через adb reverse или ssh -R.
  • Обновление образов. Регулярно обновляйте базовые образы (Alpine, Node) для получения последних исправлений безопасности.

Заключение

Контейнеризация микросервисов в Termux открывает новые возможности для мобильных разработчиков: от быстрой проверки идей до полноценного CI/CD на ходу. Docker предоставляет привычный набор команд, а Podman – более лёгкую, бездемонную альтернативу, идеально подходящую для ограниченных сред Android.

Компания RybinskLab предлагает комплексные услуги по настройке и поддержке контейнерных решений в Termux, разработке микросервисов, а также обучающие программы и консультации по DevOps‑технологиям. Свяжитесь с нами, чтобы вывести ваш мобильный workflow на новый уровень.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом RybinskLab.

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю IT-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса.

Связаться со мной
Поддержать проект