Podman, Red Hat öncülüğünde geliştirilen ve Docker’a doğrudan alternatif olarak konumlanan bir container motorudur. Komut satırı arayüzü neredeyse birebir Docker ile uyumludur (çoğu zaman alias docker=podman demek yeterlidir), ama mimari olarak önemli farkları vardır.
En büyük fark: daemon mimarisi
Docker, arka planda sürekli çalışan tek bir dockerd daemon’ı (root yetkisiyle çalışan bir servis) üzerinden işler. Tüm docker komutları bu daemon’a istek gönderir. Podman ise daemon’suz çalışır: her komut, kendi başına bağımsız bir süreç olarak yürütülür. Bu mimari fark, güvenlik ve hata toleransı açısından doğrudan sonuçlar doğurur.
Karşılaştırma tablosu
| Özellik | Docker | Podman |
|---|---|---|
| Mimari | Merkezi daemon (dockerd) | Daemon’suz, doğrudan süreç |
| Rootless kullanım | Destekler, ek yapılandırma gerekir | Varsayılan olarak rootless |
| Tek nokta arızası | Daemon çökerse tüm container’lar etkilenir | Her container bağımsız süreç, tek arıza noktası yok |
| Docker Compose desteği | Yerli (docker compose) | podman-compose / Compose uyumluluğu ile |
| Pod kavramı | Yok (Kubernetes’e özgü) | Var — Kubernetes pod’larını yerel simüle eder |
| Komut uyumluluğu | — | CLI komutları büyük ölçüde birebir aynı |
| Ekosistem & topluluk | Çok daha büyük, yaygın | Büyüyor, özellikle Red Hat/Fedora ekosisteminde güçlü |
Rootless çalışma neden önemli?
Docker’da varsayılan yapılandırmada daemon root yetkisiyle çalışır; bu da daemon’a erişimi olan birinin (veya bir güvenlik açığının) teorik olarak host sistemde root yetkisi kazanmasına yol açabilir. Podman, süreçleri doğrudan kullanıcı yetkisiyle çalıştırdığı için bu saldırı yüzeyini baştan daraltır. Bu, özellikle paylaşımlı sunucularda veya sıkı güvenlik politikası olan kurumsal ortamlarda tercih sebebi olabilir.
Pod kavramı
Podman’ın “pod” desteği, Kubernetes’teki pod kavramını yerelde taklit eder: birden fazla container’ı aynı ağ ve depolama alanını paylaşan tek bir birim olarak gruplayabilirsiniz. Bu, Kubernetes’e geçiş yapacak ekipler için yerel geliştirmeyi production’a daha yakın hale getirir.
Komut satırı düzeyinde geçiş genellikle kolaydır: docker build, docker run, docker ps komutlarının hepsi Podman’da aynı şekilde çalışır. Asıl fark, Compose dosyalarının nasıl yorumlandığı ve daemon’a bağımlı araçların (bazı CI/CD entegrasyonları, GUI istemcileri) uyumluluğunda ortaya çıkar.
Hangisini seçmeli?
- Docker: Geniş ekosistem desteği, en yaygın dokümantasyon, çoğu CI/CD ve bulut servisiyle sorunsuz entegrasyon istiyorsanız.
- Podman: Rootless/güvenlik odaklı bir gereksiniminiz varsa, systemd entegrasyonu istiyorsanız veya Red Hat/Fedora tabanlı bir altyapıda çalışıyorsanız.
İki araç da OCI (Open Container Initiative) standardına uyduğu için ürettikleri imajlar birbiriyle uyumludur — bir Docker imajını Podman’da, bir Podman imajını Docker’da sorunsuz çalıştırabilirsiniz. Seçim, mimari tercihten çok ekibinizin araç zincirine ve güvenlik gereksinimlerine bağlıdır.