платформа для управления контейнерами, позволяющая виртуализировать приложения/процессы. Такие приложения запускаются в изолированной среде со всем необходимым для своей работы. Podman является бесплатным приложением с открытым исходным кодом. Он разработан и поддерживается компанией Red Hat.
Функционально похож на Docker. Разработчики, даже, позаботились, чтобы базовые команды совпадали. Например:
podman ps
podman run
podman images
* эти команды, соответственно, позволят просмотреть список контейнеров, запустить контейнер и отобразить список загруженных образов. В докере используются аналогичные команды — docker ps, docker run и docker images.
Обе системы соответствуют стандарту Open Container Initiative (OCI).
Различия между Docker и Podman:
- Podman позволяет выгрузить конфигурацию Pod в yml-файл, готовый для загрузки в Kubernetes.
- По умолчанию, Docker запускает контейнеры с правами root, что делает его менее безопасной платформой контейнеризации.
- Docker работает как сервис (daemon), Podman запускает контейнер без привязки к сервису. Данный факт подается как преимущество Podman из-за уменьшения точки отказа — это делает систему надежнее.
- Podman умеет работать с Pod’ами, позволяя объединять несколько контейнеров в общий сервис. В Docker есть похожий подход, реализуемый с помощью docker-compose. К стати, отсюда и название — Pod Manager.
- Docker предлагает нативную кластеризацию в виде Docker Swarm, которая позволяет настроить отказоустойчивость с минимальными трудозатратами. Podman предлагает только вышеописанную выгрузку в Kubernetes.
Несмотря на описанные преимущества, на данный момент, Podman менее распространен, имеет меньшую поддержку сообщества и работает не без ошибок. Поэтому обе системы контейнеризации обсуждаются и имеют право называться лидерами в области виртуализации процессов.
Для работы с Podman применяются следующие команды:
- podman — управление контейнерами и образами.
- skopeo — копирование контейнеров и образов между различными типами хранилищ.
- buildah — создание образов. Для этого используется файл Containerfile (или Dockerfile) с декларативным описанием правил сборки.
- runc — команда для запуска любых контейнеров, которые соответствуют спецификации OCI.