Использование современных средств контейнеризации и внедрение Gitlab CI/CD для автоматизации сборки контейнеров
Предлагаю рассмотреть переход с Docker на экосистему Podman для повышения безопасности и упрощения управления контейнерами в production-среде, а также интеграцию GitLab CI/CD для автоматизации сборки и публикации образов в Container Registry.
Преимущества перехода с Docker на Podman
-
Отсутствие зависимости от демона
Podman работает без центрального демона, что устраняет единую точку отказа и позволяет запускать контейнеры напрямую. Это повышает стабильность и снижает накладные расходы на управление процессами. -
Поддержка rootless-контейнеров
Podman позволяет запускать контейнеры без прав суперпользователя (root), повышая безопасность системы. Это особенно важно для сред с жесткими требованиями к изоляции и минимизации рисков. -
Прозрачная замена Docker в дистрибутивах
В современных ОС (например, Fedora, RHEL, CentOS Stream) пакетdockerавтоматически заменяется наpodman-docker, сохраняя совместимость с командами Docker CLI. Пользователи могут продолжать работать с привычными командами, не замечая перехода. -
Интеграция с systemd
Podman поддерживает создание и управление контейнерами черезsystemd, упрощая автоматизацию запуска сервисов и их мониторинг. Это критично для продакшн-сред и долгоживущих приложений.
В проекте уже используется systemd для запуска cкрипта для сбора статистики по таймеру. Внедрение Podman позволит созранить текущий функционал и добавит возможность легко развернуть этот скрипт, без необходимости в установке зависимостей.
Преимущества использования GitLab CI/CD и Container Registry
-
Автоматизация сборки и публикации контейнеров
GitLab CI/CD позволяет настроить пайплайны для автоматической сборки OCI контейнеров с помощьюbuildah, и публикации в GitLab Container Registry. Это упрощает цикл развёртывания и обновления, минимизируя ошибки, связанные с ручными операциями. -
Безопасное хранение образов в GitLab Container Registry
GitLab Container Registry предоставляет хранилище для контейнеров, интегрированное с системой контроля версий. Podman может напрямую взаимодействовать с Registry черезpodman push/pull.
Итог
Использование этих инструментов позволит значительно упростить развёртывание приложения со всеми зависимостями. Приложение будет состоять из 2-х контейнеров:
- Контейнер с самим приложением EMD.
- И контейнер со скриптом для сбора статистики, запускаемый по таймеру.