Podman — daemonless-контейнеры без root на VPS | Глоссарий FREEHOSTING

Podman

Pod Manager
Podman — Podman — инструмент для запуска контейнеров без демона (daemonless), совместимый с Docker CLI. Работает в rootless-режиме, поддерживает pods и OCI-образы.

Определение простыми словами

Podman (Pod Manager) — утилита для управления контейнерами, разработанная Red Hat как альтернатива Docker. Главное отличие: Podman не требует постоянно работающего фонового демона (dockerd). Каждый контейнер запускается как дочерний процесс пользователя — это упрощает безопасность и интеграцию с systemd.

Podman полностью совместим с Docker CLI на уровне команд: достаточно добавить alias alias docker=podman, и большинство скриптов продолжат работать без изменений. Инструмент поддерживает OCI-образы, работает с реестрами Docker Hub, Quay.io и приватными registry.

Сравнение

Параметр Podman Docker containerd
Демон Нет (daemonless) Да (dockerd) Да
Rootless Полная поддержка Экспериментально Ограниченно
Pods Встроено Только через Compose Нет
Совместимость с k8s YAML podman play kube Нет Да (через CRI)
Systemd-интеграция Нативная (generate systemd) Требует доработки Нет

Кейсы использования

  • Rootless-контейнеры на shared-хостинге: запуск приложений без root-привилегий снижает поверхность атаки — пробой контейнера не даёт злоумышленнику root на хосте.
  • Локальная разработка с pods: группировка нескольких контейнеров в pod (как в Kubernetes) позволяет тестировать микросервисы с общим сетевым namespace.
  • Генерация systemd-юнитов: команда podman generate systemd создаёт unit-файлы для автозапуска контейнеров без docker-compose и дополнительных оркестраторов.
  • Сборка образов через Buildah: Podman использует Buildah как backend для сборки — можно собирать образы без привилегий и без Docker daemon.
  • CI/CD пайплайны: в GitLab CI или GitHub Actions Podman запускается внутри контейнера без DinD (Docker-in-Docker), что безопаснее и не требует privileged-режима.

Негативный пример: использовать Podman как прямую замену Docker Swarm или Compose в production-кластере без понимания отличий — Podman Compose существует, но не покрывает все функции docker-compose v3, а для оркестрации лучше перейти на Kubernetes или k3s.

Технические детали

Установка на Ubuntu 22.04/24.04 и базовые команды:

apt-get install -y podman
podman --version
podman pull nginx:alpine
podman run -d --name web -p 8080:80 nginx:alpine
podman ps
podman logs web
podman stop web
podman rm web

Создание pod и запуск нескольких контейнеров внутри него:

podman pod create --name myapp -p 8080:80
podman run -d --pod myapp --name app nginx:alpine
podman run -d --pod myapp --name sidecar busybox sleep 3600
podman pod ps
podman pod stop myapp
podman pod rm myapp

Генерация systemd-юнита для автозапуска контейнера:

podman generate systemd --name web --files --new
mv container-web.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now container-web.service

Экспорт конфигурации в Kubernetes YAML:

podman generate kube myapp > myapp-pod.yaml
kubectl apply -f myapp-pod.yaml

Частые вопросы

Можно ли использовать Podman вместо Docker без изменений в скриптах?

В большинстве случаев — да. Достаточно создать alias: alias docker=podman. Основные команды (run, build, pull, push, ps, logs) идентичны. Исключение — docker-compose: нужен podman-compose или замена на quadlet/systemd.

Насколько безопаснее Podman по сравнению с Docker?

Rootless-режим Podman изолирует контейнеры в пользовательском namespace: даже при компрометации контейнер не получает root на хосте. Docker в rootless работает, но требует отдельной настройки и по умолчанию использует root-демон.

Поддерживает ли Podman docker-compose файлы?

Частично — через podman-compose (отдельный пакет). Полный docker-compose v3 с depends_on, healthcheck и сетевыми алиасами поддерживается не на 100%. Для production Red Hat рекомендует переход на Podman Quadlet или Kubernetes YAML через podman generate kube.

Работает ли Podman на VPS с обычным ядром Linux?

Да, достаточно ядра 4.18+ и пакета podman из стандартных репозиториев. На Ubuntu 22.04/24.04 устанавливается одной командой apt-get install podman без дополнительных зависимостей.