Skip to content

Использование современных средств контейнеризации и внедрение Gitlab CI/CD для автоматизации сборки контейнеров

Предлагаю рассмотреть переход с Docker на экосистему Podman для повышения безопасности и упрощения управления контейнерами в production-среде, а также интеграцию GitLab CI/CD для автоматизации сборки и публикации образов в Container Registry.

Преимущества перехода с Docker на Podman

  1. Отсутствие зависимости от демона
    Podman работает без центрального демона, что устраняет единую точку отказа и позволяет запускать контейнеры напрямую. Это повышает стабильность и снижает накладные расходы на управление процессами.

  2. Поддержка rootless-контейнеров
    Podman позволяет запускать контейнеры без прав суперпользователя (root), повышая безопасность системы. Это особенно важно для сред с жесткими требованиями к изоляции и минимизации рисков.

  3. Прозрачная замена Docker в дистрибутивах
    В современных ОС (например, Fedora, RHEL, CentOS Stream) пакет docker автоматически заменяется на podman-docker, сохраняя совместимость с командами Docker CLI. Пользователи могут продолжать работать с привычными командами, не замечая перехода.

  4. Интеграция с systemd
    Podman поддерживает создание и управление контейнерами через systemd, упрощая автоматизацию запуска сервисов и их мониторинг. Это критично для продакшн-сред и долгоживущих приложений.

В проекте уже используется systemd для запуска cкрипта для сбора статистики по таймеру. Внедрение Podman позволит созранить текущий функционал и добавит возможность легко развернуть этот скрипт, без необходимости в установке зависимостей.

Преимущества использования GitLab CI/CD и Container Registry

  1. Автоматизация сборки и публикации контейнеров
    GitLab CI/CD позволяет настроить пайплайны для автоматической сборки OCI контейнеров с помощью buildah, и публикации в GitLab Container Registry. Это упрощает цикл развёртывания и обновления, минимизируя ошибки, связанные с ручными операциями.

  2. Безопасное хранение образов в GitLab Container Registry
    GitLab Container Registry предоставляет хранилище для контейнеров, интегрированное с системой контроля версий. Podman может напрямую взаимодействовать с Registry через podman push/pull.

Итог

Использование этих инструментов позволит значительно упростить развёртывание приложения со всеми зависимостями. Приложение будет состоять из 2-х контейнеров:

  1. Контейнер с самим приложением EMD.
  2. И контейнер со скриптом для сбора статистики, запускаемый по таймеру.