Podman (Pod Manager) — утилита для управления контейнерами и podами, разработанная Red Hat. В отличие от Docker, не требует фонового daemon-процесса — каждый контейнер запускается как дочерний процесс пользователя.
Как работает
Podman использует библиотеку containerd-совместимый OCI runtime (обычно crun или runc) напрямую. Команды практически идентичны Docker: podman run, podman build, podman push. Для полной совместимости можно добавить алиас alias docker=podman.
Rootless-режим запускает контейнеры без прав root, используя Linux user namespaces. Это снижает риск эскалации привилегий: взлом контейнера не даёт права root на хосте.
Podman нативно поддерживает концепцию pod (группа контейнеров с общей сетью и IPC), аналогичную Kubernetes pod. Можно экспортировать pod в Kubernetes YAML через podman generate kube.
История
Podman появился в 2018 году как часть проекта libpod от Red Hat. Цель — создать инструмент без архитектурных проблем Docker daemon (единая точка отказа, root-доступ). В 2022 году вышел Podman Desktop — GUI-приложение для macOS и Windows, составив прямую конкуренцию Docker Desktop.
Виды запуска
- Rootless — контейнеры от имени обычного пользователя, без root.
- Rootful — от root, для задач, требующих прав суперпользователя.
- Podman pod — группа контейнеров с общим network namespace.
- Podman Compose — замена Docker Compose, читает те же YAML-файлы.
Связь с хостингом
На серверах с RHEL, CentOS Stream и Fedora Podman устанавливается из стандартного репозитория без Docker. На VDS-хостинге с RHEL-подобными дистрибутивами Podman — рекомендованная альтернатива Docker для production-контейнеров благодаря rootless-режиму.
Ключевые отличия от похожих терминов
Docker использует daemon dockerd от root; Podman работает без daemon. Nerdctl — аналогичная Docker-совместимая утилита для containerd. Docker и Podman совместимы на уровне образов (OCI standard) и реестров.
Podman vs Docker
Podman — daemonless контейнерный движок: каждый контейнер запускается напрямую, без фонового демона. Rootless контейнеры по умолчанию — безопаснее. API совместим с Docker (docker-compose работает через podman-compose). Podman Desktop — GUI-альтернатива Docker Desktop.
Управление Pod'ами
Podman поддерживает концепцию Pod (как в Kubernetes): группа контейнеров с общим сетевым пространством имён. podman pod create. Генерация Kubernetes YAML из запущенных контейнеров: podman generate kube mycontainer. Миграция с Docker: alias docker=podman.
Применение в хостинге
На серверах без Docker (RHEL 8+, Fedora): Podman является частью дистрибутива. Rootless Podman — запуск контейнеров от непривилегированного пользователя без рисков эскалации. systemd-интеграция: podman generate systemd создаёт unit для автозапуска контейнера.
Podman Compose
podman-compose — реализация docker-compose API для Podman. dnf install podman-compose или pip3 install podman-compose. Совместимость с docker-compose.yml: 90%+. Отличие: нет автоматического создания сети — нужно явно указать или использовать --pod. Rootless podman-compose — запуск как обычный пользователь.