Мир мобильных устройств стремительно приближается к возможностям полноценного серверного окружения. 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 на новый уровень.