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

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

Контейнеризация микросервисов в Termux через Podman и их сканирование на уязвимости

Мир мобильных устройств стремительно приближается к возможностям полноценного серверного окружения. Termux — это терминальный эмулятор для Android, который позволяет запускать Linux‑утилиты прямо на смартфоне. С помощью Podman можно создавать и управлять OCI‑контейнерами без необходимости root‑доступа, а инструменты Trivy и Grype позволяют быстро проверять их на уязвимости.

Для начала полезно уточнить, что слово start в английском языке означает «начинать, запускать». Это определение подтверждается, например, в Cambridge Dictionary [cambridge.org] и Oxford Learner's Dictionaries [oxfordlearnersdictionaries.com].

Подготовка окружения в Termux

Для работы нам понадобится несколько базовых пакетов:

pkg update && pkg upgrade -y
pkg install git curl wget proot-distro -y

Установим Podman через официальные скрипты проекта:

curl -L https://github.com/termux/termux-packages/files/1234567/podman-4.9.0.tar.xz -o podman.tar.xz
tar -xf podman.tar.xz -C $PREFIX
rm podman.tar.xz

Проверим, что всё работает:

podman --version

Создание микросервисов в контейнерах

Рассмотрим пример простого микросервиса на Python Flask. Сначала создадим рабочий каталог и Dockerfile (Podman совместим с Docker‑форматом):

mkdir -p ~/microservice/flask_app
cd ~/microservice/flask_app
cat > Dockerfile <<'EOF'
FROM python:3.11-slim
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir flask
EXPOSE 5000
CMD ["python", "app.py"]
EOF

cat > app.py <<'EOF'
from flask import Flask
app = Flask(name)

@app.route('/')
def hello():
    return "Hello from Termux!"

if name == 'main':
    app.run(host='0.0.0.0', port=5000)
EOF

Соберём образ:

podman build -t flask-demo .

Запустим контейнер в фоновом режиме:

podman run -d --name flask-demo -p 5000:5000 flask-demo

Проверим доступность сервиса, открыв в браузере http://localhost:5000 или используя curl:

curl http://127.0.0.1:5000

Сканирование образов на уязвимости

Для обеспечения безопасности будем использовать два популярных сканера: Trivy и Grype. Оба инструмента работают в режиме «один‑раз» без необходимости установки баз данных вручную.

Установим их через curl:

# Trivy
curl -L https://github.com/aquasecurity/trivy/releases/latest/download/trivy_0.47.0_Linux-ARM.tar.gz -o trivy.tar.gz
tar -xzf trivy.tar.gz trivy && mv trivy $PREFIX/bin && rm trivy.tar.gz
# Grype
curl -L https://github.com/anchore/grype/releases/latest/download/grype_linux_arm64.tar.gz -o grype.tar.gz
tar -xzf grype.tar.gz grype && mv grype $PREFIX/bin && rm grype.tar.gz

Сканируем наш образ flask-demo:

trivy image flask-demo

Вывод покажет найденные уязвимости в базовом образе python:3.11-slim. Для более детального анализа можно использовать Grype:

grype flask-demo

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

podman pull python:3.11-slim-bullseye
podman build -t flask-demo .

Автоматизация CI/CD в Termux

Хотя Termux не заменит полноценный сервер CI, можно собрать лёгкий пайплайн с помощью GitHub Actions или локального скрипта. Пример простого bash‑скрипта, который собирает образ, сканирует его и публикует в локальном реестре:

#!/usr/bin/env bash
set -e
IMAGE_NAME="flask-demo"
# Build
podman build -t $IMAGE_NAME .
# Scan
if trivy image --severity HIGH,CRITICAL $IMAGE_NAME | grep -q "VULNERABILITIES"; then
  echo "Critical vulnerabilities found! Aborting."
  exit 1
fi
# Push to local registry (running on port 5000)
podman tag $IMAGE_NAME localhost:5000/$IMAGE_NAME
podman push localhost:5000/$IMAGE_NAME

Лучшие практики безопасности

  • Всегда используйте официальные базовые образы и регулярно обновляйте их.
  • Ограничивайте права контейнеров при помощи --user и --cap-drop.
  • Сканируйте каждый образ перед деплоем, даже если он уже проверен ранее.
  • Ведите журнал сканирований и храните отчёты для аудита.

Заключение

Termux в сочетании с Podman открывает возможности полноценной контейнеризации прямо на Android‑устройстве. Добавление сканеров Trivy и Grype позволяет поддерживать высокий уровень безопасности микросервисов, даже в условиях ограниченных ресурсов. Мы продемонстрировали процесс установки, создания микросервиса, его запуска и проверки на уязвимости.

Если вам нужна профессиональная помощь в построении контейнерных инфраструктур, настройке CI/CD или проведении аудита безопасности, обращайтесь в RybinskLab. Мы предлагаем услуги по:

  • Разработке и деплою микросервисных решений в контейнерах.
  • Аудиту безопасности контейнерных образов и рекомендациям по их hardening.
  • Обучению команд работе с Termux, Podman и инструментами сканирования.

Свяжитесь с нами, и мы поможем вывести ваш мобильный DevOps на новый уровень.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом РыбинскЛАБ.

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

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

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

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