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

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

Развертывание и управление контейнерами Docker в Termux через Portainer CLI

Пошаговое руководство по использованию Docker в Termux и управлению контейнерами через Portainer CLI: установка, инициализация, развертывание стека и базовые операции.

Termux — популярная среда для работы в Linux-подобном окружении на Android. В практических сценариях часто возникает потребность запускать контейнеры Docker прямо на устройстве и удобно управлять ими через веб-интерфейс. Один из вариантов — задействовать Portainer, но в мобильной среде нередко удобнее начинать с CLI-подхода: подготовить Docker-окружение, поднять Portainer как контейнер и затем выполнять операции через Portainer CLI.

В этой статье разберём, как развернуть и управлять контейнерами Docker в Termux с использованием Portainer CLI: от подготовки Termux и Docker-движка до запуска Portainer и управления контейнерами/стеками.

Что потребуется

  • Android-устройство с установленным Termux.
  • Доступ к интернету.
  • Локальная сеть (желательно), чтобы обеспечить доступ к веб-интерфейсу Portainer с другого устройства.
  • Достаточный объём памяти и диска (контейнеры и образы занимают место).

Важно: реализация Docker в Termux зависит от конкретной среды (архитектуры, доступности системных возможностей, режима работы). На практике чаще всего используют контейнеры внутри среды, где Docker-совместимость обеспечена (например, через прокси/обёртки или уже подготовленную конфигурацию). Ниже приведён общий рабочий сценарий, который обычно применяют в Termux при наличии подходящего Docker-окружения.

Обновление Termux и установка базовых пакетов

Начнём с подготовки окружения: обновим пакеты и установим инструменты, необходимые для скачивания файлов и работы с контейнерами.

pkg update && pkg upgrade -y
pkg install -y wget curl ca-certificates unzip

Установка Docker и проверка работы

Дальше нужно подготовить Docker. В некоторых сборках Termux Docker может поставляться отдельно или доступен через совместимые компоненты. Рассмотрим проверочный подход:

which docker
docker --version

Если команда docker не находится, потребуется установить/настроить Docker под вашу конкретную среду (в зависимости от доступных пакетов и способа запуска контейнеров). Для корректности приведённой методики вам нужно иметь возможность выполнять команды Docker в Termux.

После установки убедитесь, что доступны базовые операции:

docker info

Подготовка рабочей директории

Создадим директорию для Portainer и опционально для конфигураций:

mkdir -p ~/portainer
cd ~/portainer

Развертывание Portainer (как контейнера)

Portainer — это удобный инструмент управления Docker-окружениями. Для старта мы запустим его в виде контейнера, сохраняя данные в volume, чтобы интерфейс и настройки не терялись после перезапусков.

Ниже пример запуска Portainer в типичной схеме. Подстройте порты при необходимости.

docker volume create portainer_data

docker run -d \
  --name portainer \
  -p 9000:9000 \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

Проверим, что контейнер поднялся:

docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Image}}"

Откройте браузер на устройстве в той же сети и перейдите к адресу вида http://<IP_вашего_Android>:9000. Если сеть ещё не настроена, можно создать локальную сеть на базе VPN-сервиса, используя только для создания локальной сети, а не для обхода блокировок.

Управление через Portainer CLI: концепция

Portainer CLI предназначен для выполнения действий через API Portainer, то есть вы управляете контейнерами, стеками и ресурсами тем же способом, но из командной строки. Как правило, алгоритм выглядит так:

  1. Получить URL Portainer.
  2. Создать (или использовать) API-ключ в Portainer.
  3. Загрузить/подключить Portainer CLI.
  4. Выполнить операции (например, список контейнеров, деплой стека, перезапуск).

Рекомендуемый путь — начинать с получения токена/ключа в веб-интерфейсе Portainer, затем применять его в CLI-командах.

Получение API-ключа в Portainer

Откройте Portainer в браузере, пройдите первичную настройку (создание админа/окружения), затем найдите раздел, связанный с API-ключами (в интерфейсе это может быть Account Settings или аналогичный). Скопируйте сгенерированный ключ.

Далее переменная окружения для удобства:

export PORTAINER_URL="http://<IP_вашего_Android>:9000"
export PORTAINER_API_KEY="<ваш_API_ключ>"

Установка Portainer CLI в Termux

В зависимости от версии и способа поставки CLI, вы можете использовать готовый бинарник или контейнерный подход. Ниже показан наиболее универсальный вариант — запуск CLI, если у вас есть поддерживаемый способ получения бинарника.

Скачивание бинарника обычно выполняют из официальных источников. Подставьте корректную ссылку на релиз (версию смотрите в документации Portainer):

# Примерно: скачайте релиз Portainer CLI под вашу архитектуру
# URL может отличаться в зависимости от версии
wget -O portainer-cli "<URL_на_релиз_portainer_cli>"
chmod +x portainer-cli

Проверка:

./portainer-cli version

Подключение Portainer к Docker окружению

В типичном сценарии Portainer уже работает, потому что контейнер Portainer смонтировал /var/run/docker.sock. В CLI вам остаётся оперировать ресурсами через API Portainer. Проверьте базовую команду для теста (примерно):

./portainer-cli --url "$PORTAINER_URL" --api-key "$PORTAINER_API_KEY" system info

Если команда отличается для вашей версии CLI, используйте справку:

./portainer-cli --help

Базовые операции: контейнеры

Далее рассмотрим типовые действия. Названия команд могут немного отличаться в зависимости от версии Portainer CLI, но логика одна — вы выполняете запросы через API Portainer.

Просмотр списка контейнеров

./portainer-cli --url "$PORTAINER_URL" --api-key "$PORTAINER_API_KEY" docker ps

Запуск нового контейнера

Один из практичных способов — деплой через compose/stack. Однако если требуется именно один контейнер, можно использовать команду запуска (если поддерживается CLI) или подготовить compose-файл и применить как stack.

Например, вы можете использовать compose ниже и задеплоить через Portainer CLI (рекомендуемый путь для воспроизводимости).

Деплой приложения через Docker Compose (как stack)

Создадим пример docker-compose.yml. Здесь показан минимальный вариант для демонстрации. Вы можете заменить сервис на свой.

cat > docker-compose.yml <<'YAML'
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
YAML

Затем задеплоим как stack через Portainer CLI (примерно). Название команды/флагов уточните по ./portainer-cli --help или вашей версии CLI. Общий смысл такой:

./portainer-cli \
  --url "$PORTAINER_URL" \
  --api-key "$PORTAINER_API_KEY" \
  stack deploy \
  --name my-stack \
  --file docker-compose.yml

Проверим контейнеры через Docker:

docker ps | head

Проверьте доступность сервиса в браузере:

http://<IP_вашего_Android>:8080

Остановка и перезапуск

Для удобства используйте stack-операции через CLI. Пример логики:

./portainer-cli --url "$PORTAINER_URL" --api-key "$PORTAINER_API_KEY" stack stop --name my-stack
./portainer-cli --url "$PORTAINER_URL" --api-key "$PORTAINER_API_KEY" stack start --name my-stack

Если вы управляете отдельными контейнерами, команды будут аналогичными по смыслу: остановка/запуск контейнера по имени.

Просмотр логов

Логи полезны при отладке. Примерно:

./portainer-cli --url "$PORTAINER_URL" --api-key "$PORTAINER_API_KEY" logs --container web --follow

При несовпадении параметров используйте подсказки CLI справки.

Хранение данных: volumes и воспроизводимость

При разработке и эксплуатации контейнеров важно использовать volumes для сохранения данных. В Termux на Android система может перезапускаться/перемонтироваться, поэтому без volumes вы рискуете потерять данные.

Рекомендуется:

  • Хранить данные сервисов в именованных volumes.
  • Для конфигураций — использовать bind-mountы в директории проекта (если это допустимо в вашей среде).
  • Всегда фиксировать версию образов (например, nginx:alpine или конкретный тег).

Практические советы для Termux

  • Сеть и порты: заранее планируйте порты, чтобы не конфликтовать с системными службами.
  • Автозапуск: для контейнера Portainer используйте --restart=always. Для остальных сервисов — аналогично через compose/stack.
  • Права и сокеты: портainer должен иметь доступ к Docker socket (через -v /var/run/docker.sock:/var/run/docker.sock).
  • Ограничения Android: помните, что фоновые процессы могут ограничиваться системой энергосбережения. Настройка оптимизаций батареи иногда критична для стабильной работы.

Заключение

Развертывание Docker-контейнеров в Termux и управление ими через Portainer CLI позволяет превратить мобильное окружение в удобную платформу для экспериментов, легковесной разработки и отладки сервисов. Ключевой шаг — корректно поднять Portainer с доступом к Docker socket, затем управлять ресурсами из командной строки, используя API-ключ и выбранные команды Portainer CLI.

Если вы хотите быстрее добиться стабильной работы на вашем устройстве, настроить окружение и подобрать оптимальную схему для ваших задач (контейнеры, стеки, доступ по сети, volumes), обращайтесь в РыбинскЛАБ — поможем с настройкой и эксплуатацией решения под ваши условия.

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

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

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