Termux – это мощный терминал для Android, позволяющий запускать полноценные Linux‑утилиты. Благодаря поддержке proot и qemu можно запускать Docker‑контейнеры прямо на смартфоне. В этой статье мы разберём, как start Docker‑демон, настроить buildx для создания мультиплатформенных образов и полностью автоматизировать процесс сборки и деплоя.
Термин start в значении «начать действие» описан в словарях как «to begin an activity or undertaking» merriam-webster.com и «to begin doing something» cambridge.org.
Подготовка среды
Перед тем как start работу с Docker, убедитесь, что у вас установлен Termux последней версии и включён доступ к хранилищу:
termux-setup-storage
Рекомендуется использовать pkg для установки базовых пакетов:
pkg update && pkg upgrade -y
pkg install git curl proot-distro -y
Установка Docker в Termux
В Termux нет официального пакета Docker, поэтому используем proot-distro для запуска Ubuntu‑окружения, где Docker будет установлен нативно.
# Устанавливаем образ Ubuntu
proot-distro install ubuntu-20.04
# Запускаем контейнер
proot-distro login ubuntu-20.04
# Внутри Ubuntu устанавливаем Docker
apt update && apt install -y ca-certificates curl gnupg lsb-release
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin
# Добавляем текущего пользователя в группу docker
usermod -aG docker $(whoami)
newgrp docker
# Проверяем, что Docker работает
systemctl enable docker
systemctl start docker
docker version
Обратите внимание, что в Termux systemctl работает через proot, поэтому иногда требуется запустить демоны вручную: dockerd &.
Настройка buildx для мультиплатформенных образов
Docker‑плагин buildx позволяет создавать образы сразу для нескольких архитектур (amd64, arm64, arm/v7 и т.д.). После установки Docker в Ubuntu‑окружении buildx уже доступен.
# Создаём новый builder с поддержкой QEMU
docker buildx create --use --name multiarch_builder
# Инициализируем эмуляцию
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# Проверяем доступные платформы
docker buildx inspect --bootstrap
Теперь можно собрать образ, поддерживающий несколько платформ:
docker buildx build \
--platform linux/amd64,linux/arm64,linux/arm/v7 \
-t yourrepo/yourapp:latest \
--push .
Автоматизация сборки и деплоя
Для полной автоматизации используем скрипт, который будет запускаться из cron (в Termux – через termux-cron) или из собственного CI‑pipeline.
#!/usr/bin/env bash
# build_and_deploy.sh – автоматический билд и пуш образа
set -e
# Перейти в директорию проекта
cd $HOME/myproject
# Сборка мультиплатформенного образа
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t myregistry.example.com/myapp:${DATE:-$(date +%Y%m%d)} \
--push .
# Уведомление (Telegram, Slack и т.п.)
curl -X POST -H "Content-Type: application/json" -d '{"text":"✅ Docker image built and pushed"}' https://hooks.example.com/notify
Сделайте скрипт исполняемым и добавьте в планировщик:
chmod +x $HOME/build_and_deploy.sh
termux-cron add "0 2 * $HOME/build_and_deploy.sh"
Пример CI‑скрипта для GitHub Actions (работает в Termux через self‑hosted runner)
name: Docker Build & Deploy
on:
push:
branches: [ main ]
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v3
- name: Set up Docker Buildx
run: |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx create --use
- name: Build and push multi‑arch image
run: |
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t myregistry.example.com/myapp:${{ github.sha }} \
--push .
Развёртывание образов на удалённом сервере
После того как образ запушен в реестр, его можно разворачивать через docker compose или оркестраторы (Kubernetes, Nomad). Пример простого docker‑compose.yml:
version: "3.9"
services:
app:
image: myregistry.example.com/myapp:latest
restart: always
ports:
- "8080:80"
environment:
- ENV=production
Запуск:
docker compose up -d
Заключение
Мы рассмотрели полный цикл: от установки Docker в Termux до создания мультиплатформенных образов с buildx и их автоматизированного билда и деплоя. Такой подход позволяет использовать мобильное устройство как полноценный CI‑агент, экономя ресурсы и ускоряя процесс разработки.
Если вам нужен профессиональный аудит, настройка CI/CD или поддержка инфраструктуры под Android/Termux, команда RybinskLab готова помочь. Мы предоставляем услуги по автоматизации, контейнеризации и DevOps‑поддержке любой сложности.