Введение
Podman (Pod Manager) – инструмент управления контейнерами, разработанный Red Hat. В отличие от Docker, Podman не требует постоянно работающего фонового демона: каждая операция (запуск контейнера, управление образами) выполняется как отдельный процесс. Это делает Podman daemonless.
Ключевое преимущество: Podman поддерживает rootless-режим – контейнеры запускаются от имени обычного пользователя без привилегий root. Это кардинально улучшает безопасность по сравнению с Docker, где демон dockerd работает с правами root.
История и контекст
Podman создан Red Hat (Дэн Уолш и команда) в 2018 году как часть набора инструментов container tools (buildah, skopeo, podman). Основная мотивация – устранить архитектурные уязвимости Docker, связанные с root-демоном. Red Hat включил Podman в RHEL 8 как замену Docker.
Podman полностью совместим с Docker CLI: alias docker=podman работает для большинства команд. Поддерживает OCI Image format и OCI Runtime Spec (через runc/crun), что обеспечивает совместимость с любыми OCI-образами.
Как это работает
- Daemonless архитектура: команда
podman runзапускает процесс conmon (container monitor) для каждого контейнера. Нет единого root-демона – нет единой точки отказа. - Rootless containers: через user namespaces Linux – процессы контейнера работают под непривилегированным пользователем хоста. Изолированы через cgroups v2 и seccomp.
- Pods: Podman нативно поддерживает концепцию pod (группа контейнеров с общим сетевым пространством) – аналогично Kubernetes Pod. Позволяет тестировать K8s-сценарии локально.
- Systemd-интеграция:
podman generate systemdсоздаёт unit-файлы для управления контейнерами через systemd – нативно для RHEL-систем. - Docker-совместимость: поддерживает Dockerfiles, Docker Hub, docker-compose (через podman-compose).
Где применяется
- RHEL/CentOS/Fedora-среды: стандартный инструмент контейнеризации в Red Hat-экосистеме.
- CI/CD pipelines: безопасный запуск контейнеров в pipeline без root (GitLab CI, Tekton).
- Kubernetes-разработка: тестирование podов локально перед деплоем в кластер через
podman play kube. - Безопасные среды: организации с жёсткими требованиями к безопасности – rootless исключает root-эскалацию через контейнеры.
Преимущества и ограничения
Преимущества: rootless-режим повышает безопасность; нет root-демона – нет единой точки отказа; нативная поддержка pods и Kubernetes-yaml; совместимость с Docker CLI и OCI-образами; systemd-интеграция.
Ограничения: rootless networking через slirp4netns медленнее kernel bridge Docker; docker-compose не всегда совместим без podman-compose; менее богатая экосистема сторонних инструментов; некоторые Docker-специфичные функции отсутствуют.
Связь с другими понятиями
Podman работает с OCI Image стандартом совместно с Docker. Нативно поддерживает Kubernetes-манифесты через podman play kube. В паре с Buildah (сборка образов) и Skopeo (копирование образов) формирует полный toolchain. Концепция rootless-контейнеров реализуется через Linux user namespaces и cgroups v2.