Güvenliği artırılmış Docker alternatifi: ‘Podman’ incelemesi
(betterstack.com)- Podman, Docker’a benzer bir konteyner çalıştırma deneyimi sunarken daemon olmadan çalışması sayesinde güvenlik ve denetim izi açısından ayrışır
- Docker, Docker daemon merkezli bir istemci-sunucu yapısı kullanırken Podman, konteynerleri doğrudan kullanıcı oturumunda oluşturur; bu da çalıştıran kullanıcıyı izlemeyi daha net hale getirir
- OCI standardını izlediği için Docker Hub’daki
hello-world,caddy,wordpress,mysql:5.7gibi imajları çalıştırabilir ve birçok durumdadockerkomutunupodmanile değiştirerek kullanabilirsiniz - Kısa imaj adları, Docker’daki gibi Docker Hub’ı otomatik varsayılan olarak kullanmadığından tam imaj adı, takma ad veya
unqualified-search-registriesayarlarından biri gerekir - Çoklu konteyner yapılandırmaları Podman Compose, pod’lar ve Kubernetes manifest’leriyle yönetilebilir; ancak Docker Swarm benzeri yerleşik üretim orkestrasyonu olmadığından Kubernetes gibi harici bir sistem kullanmak gerekir
Podman ile Docker’ın ayrıldığı nokta
- Podman, Docker’a göre daha güvenli ve daha hafif bir alternatif olmayı hedefleyen açık kaynaklı bir konteyner motorudur
- Sürekli arka planda çalışan bir daemon olmadan konteyner çalıştırır ve kullanıcıların konteynerleri doğrudan yönetmesini sağlayan bir yapıya sahiptir
- Varsayılan güvenlik yaklaşımı rootless konteynerler, kullanıcı ad alanları ve kernel capability’lerinin daha temkinli kullanımına odaklanır
- Docker imajları ve komut yapısıyla yüksek uyumluluk sunduğu için Docker alternatifi arayan geliştiriciler ve sistem yöneticileri için pratik bir seçenektir
Mimari ve denetim izi
- Docker, istemci-sunucu modelini kullanır ve konteyner çalıştırma istekleri Docker client’tan Docker daemon’a iletilir
- Konteyner süreçleri, kullanıcı oturumunun değil Docker daemon’un alt süreçleri olur
- Linux denetim sistemi
auditd, konteyner süreç olaylarını algıladığında denetim kullanıcı kimliği gerçek kullanıcı kimliği yerineunsetolarak görünebilir - Bu yapıda kötü niyetli etkinlikleri belirli bir kullanıcıyla ilişkilendirmek zordur
- Podman, daemon’suz mimari kullanır
- Her konteyner doğrudan kullanıcının oturum açtığı oturum üzerinden oluşturulur
- Konteyner süreç verileri kullanıcı bilgisini korur
auditd, belirli bir konteyner sürecini başlatan kullanıcı kimliğini doğru biçimde algılayıp kaydedebilir
- İmaja bağlı olarak Podman’ın konteyner başlatma hızı Docker’dan %50’ye kadar daha hızlı olabilir
Konteyner yaşam döngüsü yönetimi
- Podman’da daemon olmadığı için konteyner yaşam döngüsü yönetimi de Docker’dan farklıdır
- Linux’ta büyük ölçüde Systemd’ye dayanır
--restart alwaysbayrağıyla belirtilen konteynerlerin yeniden başlatma ilkesini uygulamak içinpodman-restartadlı birsystemdservisi kullanır- Bu servis, sistem yeniden başlatıldıktan sonra belirtilen konteynerleri otomatik olarak tekrar başlatır
- Çalışan konteynerlerden Systemd servis dosyası oluşturan komutlar da sunar
- Konteynerleri
systemdyönetimine almak; başlatma, durdurma ve denetimi kolaylaştırır
- Konteynerleri
- Docker bu işleri daemon içinde halleder
Orkestrasyon seçenekleri
- Yerel geliştirmede Docker kullanıcıları genelde çoklu konteyner uygulamalarını tanımlamak ve yönetmek için Docker Compose kullanır
- Podman, Compose dosyalarını yerleşik olarak desteklemez ancak Podman Compose ile uyumlu bir alternatif sunar
- Genellikle mevcut
docker-compose.ymldosyalarıyla çalışır - Docker Compose’a alışkın kullanıcılar mevcut Compose dosyalarını kullanmayı sürdürebilir
- Genellikle mevcut
- Podman’ın yerel yaklaşımı olarak pod’lar kullanılabilir
- Bu kavram Kubernetes’ten gelir
- Birden fazla konteyner tek bir birim gibi yönetilebilir
- Üretim dağıtımlarında Podman’da Docker Swarm benzeri yerleşik bir orkestrasyon aracı yoktur
- Bu durumda Kubernetes gibi harici orkestrasyon sistemleri alternatif olur
- Kubernetes, Podman ile entegre olabilir ancak düzgün çalışması için ek yapılandırma ve ayarlar gerekebilir
Varsayılan güvenlik ayarları
- Konteyner güvenliğindeki büyük risklerden biri, konteynerden kaçış yaşanıp ana sistemin ele geçirilmesidir
- Podman, Docker’a göre daha güçlü varsayılan güvenlik ayarları sunacak şekilde tasarlanmıştır
- rootless konteynerler
- kullanıcı ad alanları
- seccomp profilleri
- Docker’da da rootless konteynerler, kullanıcı ad alanları ve seccomp profilleri kullanılabilir; ancak bunlar varsayılan olarak etkin değildir ve çoğu zaman ek yapılandırma gerekir
- Podman’ın varsayılan yapılandırması, rootless konteynerleri izole kullanıcı ad alanları içinde çalıştırarak olası kaçışların etkisini sınırlar
- Docker’ın varsayılan yapılandırması ise konteyner süreçlerini
rootolarak çalıştırır; bu da kaçış durumunda daha yüksek risk oluşturur - Capability varsayılanları da farklıdır
- Podman varsayılan olarak konteynerleri 11 capability ile başlatır
- Docker ise daha izin verici bir varsayılanla 14 capability kullanır
- Her iki araç da güçlü güvenlik yapılandırmalarıyla ayarlanabilir, ancak Podman’da bu seviyeye ulaşmak için genelde daha az çaba gerekir
Özellik karşılaştırmasında öne çıkan farklar
- Podman, daemon’suz mimariyi ve Systemd entegrasyonunu destekler
- Konteynerleri pod’lar halinde gruplayabilir ve Kubernetes YAML dosyalarıyla çalışabilir
- Docker, Docker Swarm’ı desteklerken Podman desteklemez
- Bunun dışındaki çoğu özellikte iki taraf büyük ölçüde eşdeğer kabul edilebilir
Kurulum ve çalışma ortamı
- Podman, Docker gibi başlıca işletim sistemlerinde çalışabilir
- macOS
- Windows
- büyük Linux dağıtımları
- Önemli fark, Linux’ta yerel olarak çalışırken Windows ve macOS’te sanal makine gerektirmesidir
- Örnekler, Debian tabanlı Linux dağıtımları olan Ubuntu, Mint ve Debian’ı varsayar
- En güncel Podman’ı kurmak için nispeten yeni bir dağıtım gerekir
- Yazının yazıldığı sıradaki en güncel ana Podman sürümü
4.x - Ubuntu 22.04 LTS, Podman
3.xsürümüne bağlıdır - Örnekler Ubuntu 23.10 temel alınarak verilmiştir
- Yazının yazıldığı sıradaki en güncel ana Podman sürümü
- Kurulumdan sonra örnek çıktı
podman version 4.3.1şeklindedir ve yereldepodmankomutunun çalıştırılabildiğini doğrular
Docker imajlarını çalıştırma ve OCI uyumluluğu
- Podman, Docker ekosistemi araçlarıyla oluşturulmuş
hello-worldimajını çalıştırabilir - Bu uyumluluk, hem Docker’ın hem de Podman’ın OCI (Open Container Initiative) standartlarını izlemesinden kaynaklanır
- OCI, imaj biçimi belirtimini ve çalışma zamanı belirtimini tanımlar
- Farklı konteyner çalışma zamanlarının birlikte çalışabilmesini sağlar
- Docker Hub’daki çoğu Docker imajı ve konteyneri Podman’da kullanılabilir
- Böylece mevcut iş yüklerini değişiklik yapmadan Podman’a taşıyabilir veya Docker Hub’daki imaj kütüphanesinden yararlanabilirsiniz
hello-worldçıktısında “Hello from Docker!” yazsa bile gerçekte çalıştıran Podman’dır- Docker client ya da Docker daemon çalıştırma sürecine dahil olmaz
Kısa imaj adı işleme biçimi
- Docker, tam imaj adı belirtilmezse varsayılan kayıt defteri olarak Docker Hub
docker.io’yu kullanır - Podman, kısa ad kullanımını teşvik etmez ve varsayılan kayıt defterini otomatik olarak varsaymaz
hello-world,shortnames.confiçinde bir takma ada sahip olduğu içindocker.io/library/hello-worldolarak çözümlenircaddygibi takma adı olmayan bir imaj kısa adla çalıştırılırsa şu hata alınırError: short-name "caddy" did not resolve to an alias and no unqualified-search registries are defined in "/etc/containers/registries.conf"
- Bunun üç çözümü vardır
- Tam imaj adı kullanarak
docker.io/library/caddygibi açıkça belirtmek registries.confiçine[aliases]bölümü ekleyip"caddy"="docker.io/caddy"biçiminde takma ad tanımlamakunqualified-search-registries=["docker.io"]ayarlayıp kısa adların Docker Hub’da aranmasını sağlamak
- Tam imaj adı kullanarak
- Kullanıcıya özel ayarlar
$HOME/.config/containers/registries.confdosyasına konabilir- Bu dosya
/etc/containers/registries.confdosyasından önceliklidir - Root yetkisi olmadan yapılandırılabildiği için rootless yaklaşımla daha iyi uyum sağlar
- Bu dosya
- Podman’ı bir Docker yerine kullanmak istiyorsanız, uzun vadede takma adlardan çok
unqualified-search-registriesayarı daha kullanışlıdır
Özel kayıt defteri kullanımı
- Podman da Docker gibi özel kayıt defterleri kullanabilir
- Docker Hub hesabı kullanılan örnek şu akışı izler
- Docker Hub’da bir access token oluşturulur
- Açıklama
Podman tutorial, izinlerRead & Writeolarak ayarlanır - Özel bir repository oluşturulur
podman login docker.ioile oturum açılır
docker.io,registries.confiçindeki ilkunqualified-search-registriesgirdisiyse atlanabilir; ancak kayıt defterini açıkça belirtmek iyi bir pratiktir- Kayıt defteri belirtilmezse
podman loginşu hatayla başarısız olurError: no registries found in registries.conf, a registry must be provided
- Oturum açtıktan sonra
hello-worldimajı özel repository’ye push edilebilir, yereldeki public imaj silinebilir ve ardından özel repository imajıyla konteyner çalıştırılabilir - Geçerli oturum açma bilgileri yoksa özel imajı pull etmeye çalışırken erişim reddi ve kimlik doğrulama gerektiğine dair hata alınır
- Özel kayıt defteri kullanımında dikkat çeken temel fark,
dockeryerinepodmankullanılmasıdır; Podman yaygın özel kayıt defterleriyle çalışabilir
Podman Compose ile çoklu konteyner çalıştırma
- Birden fazla konteyneri tek bir birim olarak çalıştırmanız gerektiğinde Podman birkaç seçenek sunar
- Podman Compose
- pod’lar
- Kubernetes manifest’leri
- Örnek, Podman Compose kullanarak WordPress ve MySQL çalıştırır
- Podman Compose, topluluk odaklı bir araçtır; Compose specification standardını uygular ve Podman ile entegre olur
- Python 3’e bağımlıdır ve örnekte pipx ile kurulur
- Örnek kurulum çıktısı
podman-compose 1.0.6 - Kullanılan Podman sürümü
4.3.1
- Örnek kurulum çıktısı
pipx,$HOME/.local/binaltına kurulum yaparsa bu yol$PATHiçinde olmayabilirpipx ensurepathile yol eklenebilir- Yeni bir terminal açmak veya kabuk yapılandırma dosyasını yeniden yüklemek gerekir
WordPress ve MySQL örneği
- Örnekte, veritabanı kullanıcısı, parola ve veritabanı adı
.envdosyasında tanımlanır; WordPress ve MySQL servisleri isedocker-compose.ymlile yapılandırılır podman-compose up -dçalıştırıldığında Podman Compose,docker-compose.ymldosyasını analiz ederwordpressservisinin işlenişi- Gerekli external volume aranır, yoksa oluşturulur
- Uygun network aranır, yoksa oluşturulur
wordpresskonteyneri çalıştırılır- Yerel imaj yoksa yapılandırılmış
docker.iokayıt defterindenwordpress:latestçekilir
dbservisinin işlenişipodman-tutorial_dbvolume’u oluşturulur- Mevcut ağ kontrol edilir
mysql:5.7konteyneri çalıştırılır- Yerel imaj yoksa Docker Hub’dan çekilir
- Çalıştırdıktan sonra
localhost:8080adresinde WordPress kurulum sayfası görülebilir podman psçıktısındawordpressvedbkonteynerlerinin çalıştığı görünürwordpress,0.0.0.0:8080->80/tcpile porta eşlenmiştirdb,mysql:5.7imajıyla çalışır
- İmaj listesinde
docker.io/library/wordpress:latestvedocker.io/library/mysql:5.7görünür - Ağ listesinde varsayılan
podmanağı ile Podman Compose’un oluşturduğupodman-tutorial_defaultağı görünürpodman-tutorial_default,docker-compose.ymliçinde tanımlı konteynerleri aynı sistemdeki diğer konteynerlerden ayırmak için oluşturulur
- Volume listesinde
podman-tutorial_dbvepodman-tutorial_wordpressgörünür podman-compose down, konteynerleri durdurup siler ancak ağı ve volume’leri korur- Volume kaldırmak için
podman volume rmkullanılır - Ağ kaldırmak için
podman network rmkullanılır
- Volume kaldırmak için
- Komutlar Docker ve Docker Compose’a çok benzer; fark,
dockervedocker-composeyerinepodmanvepodman-composeyazılmasıdır
Seçim ölçütleri
- Podman, konteyner iş yüklerini çalıştırmak için Docker’a pratik bir alternatiftir
- Docker’ın yapabildiği işlerin çoğunu yapabilir ve arka planda çalışan bir daemon gerektirmemesi avantaj sağlar
- Docker’da olmayan bazı özellikler de sunar
- Kubernetes manifest dosyalarıyla çalışma
- Tek tek konteynerleri pod’lar halinde düzenleme
- Daha hafif ve daha güvenli bir konteyner yönetim çözümüne ihtiyacınız varsa Podman daha iyi bir seçenek olabilir
- Güçlü ekosistem ve geniş topluluk desteği önceliğinizse Docker daha uygun olabilir
- Daha fazla inceleme için Podman resmi web sitesi, dokümantasyon ve topluluk kaynaklarına bakabilirsiniz
1 yorum
Hacker News yorumları
Podman'ın systemd unit dosyalarını desteklediği zamanlar iyiydi. Çünkü yalnızca container'ları değil, tüm pod'ları da systemd ile otomatik başlatıp otomatik güncelleyebiliyordunuz
Sonra bu özelliği kaldırıp Quadlet'i öne çıkarmaya başladılar. Tekil container'lar unit dosyalarıyla yapılabiliyor ama pod'lar için Kubernetes cluster tanımı kullanmak gerekiyor
Üstelik Docker'dan farklı olarak container'lar SELinux tanımlarına uyduğu için, eşlediğim dizinlere erişemedikleri durumlarda birkaç kez epey uğraştım
Sonuçta Podman'ın ne yapmamı istediğini anlayamıyorum. Kubernetes mi kullanmalıyım? Mantıksal yolları eşlemek yerine her şey için özel dizinler mi oluşturmalıyım?
Bu özellik artık kullanımdan kaldırılmış Podman işlevini kullanmadan unit dosyalarını doğrudan yazıyor; kişisel olarak da eski Podman yönteminden çok daha sorunsuz buldum
Özelliği etkinleştirmek için
$ podman-compose systemd -a create-unit, systemd unit kaydı için ise$ podman-compose systemd -a register,$ systemctl --user enable --now "podman-compose@$PROJECT_NAME"kullanılıyorGüncelleme
$ podman-compose pullardından$ systemctl --user restart "podman-compose@$PROJECT_NAME"ile yapılıyor.$PROJECT_NAMEgenelde dizin adı oluyorİncelemek isterseniz özelliğin kaynak kodu burada: https://github.com/containers/podman-compose/blob/f6dbce3618...
Hâlâ podman 4.3.1 kullanıyorum ama sonraki sürümlerde bu yöntemin durması için bir neden görünmüyor
Ayrıca podman-generate-systemd'nin ürettiği systemd dosyaları nihayetinde
"podman start containername"çalıştırmaktan ibaretti, bu yüzden elle yazmak da kolay. Ancak docker-compose gibi şeylerden farklı olarak container neredeyse bir kara kutuQuadlet'in avantajı, container tanımının
.containerdosyasında bildirimsel olarak yer alması. Eskiden podman run komut satırını elle systemd unit'ine yazardık; bu açıdan Quadlet büyük bir iyileştirme ve docker-compose'a alternatif de olabilir. Elbette artıları ve eksileri varpodman generate systemd [...]çalıştırmaya her kalktığımda bu geçişin yaşandığını yeniden hatırlıyorumBunu sık yaşamamamın nedeni, bu işi makul bir şekilde halleden bir Ansible rolünü kendim yazmış olmam
Yine de Podman'ın yönünü kaybetmiş gibi hissettirdiği çok açık. Unit dosyası bakımı ve ilişki tasarımı tarafını zaten benimsediniz; o hâlde keşke generator'ı kullanmamıza izin verseniz. Quadlet'miş, daha iyiymiş gibi argümanlar umurumda değil
containers.confdosyasına şunu ekleyebilirsiniz:[containers] label=falsePodman'ın varsayılan güvenlik seviyesi hoşunuza gitmiyorsa genelde kapatmanın bir yolu vardır
Bu model çok sezgiseldi ama Docker Compose'a uygulamak için çok fazla elle taşıma gerekiyordu
Bu yüzden Compose dosyalarını NixOS yapılandırmasına dönüştürüp yerel olarak yorumlanıp yönetilebilmesini sağlayan bir araç yaptım: https://github.com/aksiksi/compose2nix
Podman'ı Docker'a tercih etmek için belirleyici bir neden olarak pek dile getirilmeyen bir avantaj var: Docker ağ ayarlarını bozuyor
Docker ile KVM sanal makinelerini bridge ile aynı anda çalıştırmaya çalışmak kâbus; Podman ise varsayılan ayarlarla bile çok daha uyumlu
VPN de Docker yüzünden çoğu kez bozuldu ya da Docker'ı bozdu. Podman'ın ağ tarafında içeride nasıl çalıştığını pek bilmiyorum ama en azından diğer işleri engellemeyecek şekilde iyi tasarlanmış gibi görünüyor. Docker için bunu asla söyleyemem
Dockerfile'ın tamamen çöp olduğunu düşünüyorum. Mevcut diller fazlasıyla yeterliyken “canı sıkılmış geliştiricilerin” yeni bir DSL ya da programlama dili oluşturmasından gerçekten nefret ediyorum. Özellikle YAML olunca daha da öyle; bu örnekte YAML değil ama Dockerfile, bu işi neden bırakmamız gerektiğini gösteren harika bir örnek
Buildah'a
budolmadan bakınca nedeni ortaya çıkıyor. Kullanım senaryosu standart yoldan azıcık saptığında bile sinir bozucu, özensiz bir DSL yerine Bash, Fish ya da istediğiniz herhangi bir şeyi kullanabiliyorsunuzBu kötü karar Docker ekosisteminin tamamına yayılıyor. DCS ve onun hep yarım kalan alternatifleri de örnek. Cosign gibi yerleşik bir imzalama protokolü kullanmak yerine, otomasyonu zor ve özellikle anahtar rotasyonu zahmetli olan karmaşık bir sistem yapmak istediler
Podman'ın daha yaygın kullanılmasına sevindim. Çok fazla araç, kullanıcının
sudo dockergrubunu eklediğini varsayarak yapılmış; bu yüzden root erişimini gelişigüzel vermeyen türden güvenliği önemseyen Docker kurulumlarında bozuluyorSertifikalı bir RHEL mühendisi olarak Podman’ı birkaç yıldır kullanıyorum.
Açıkçası kişisel konteyner kullanımı için oldukça hoşuma gidiyor. Ancak iş yerinde geliştiricilere hâlâ Docker sunuyoruz. Şimdiye kadar geliştiricilere docker compose’un sadeliğine denk bir şey sunmanın bir yolunu bulamamıştık.
Konteyner imajları oluştururken CI pipeline’larında buildah da kullanıyoruz, ancak geliştirici son kullanıcı açısından docker compose hâlâ baskın.
https://www.techrepublic.com/article/how-to-fix-the-docker-a...
Bu sorun yüzünden neredeyse yakalanıyordum.
Red Hat’in Docker’a alternatif geliştirmeye neden yatırım yaptığını hâlâ tam olarak bilmiyorum, ama ortaya çıkan sonucu gerçekten beğeniyorum
Podman, Docker’ın yaptığı neredeyse her şeyi yaparken pod gibi ek özellikler sunuyor ya da daemon’sız konteyner oluşturma süreci gibi çoğu zaman yaklaşım olarak daha iyi seçenekler getiriyor
Sıradan geliştiriciler için en büyük sorun muhtemelen Docker compose olacaktır; basit bir compose dosyası kullanıyorsanız Docker compose belirtimiyle uyumlu olmaya çalışan podman-compose betiği var
docker-compose’un backend’i olarak Podman kullanmanın bir yolu da var [1]. Genel olarak 2024’te bir Linux makinede Docker kullanmak için bir neden göremiyorum. macOS veya Windows’ta Podman’ın nasıl olduğunu ise pek bilmiyorum
[1] https://www.redhat.com/sysadmin/podman-docker-compose
Buna Docker’ın eskiden de şimdi de alışılmadık derecede çok güvenlik sorunu olması ve Docker tarzı konteynerlerin ve imajların geliştiriciler arasında çok yaygın kullanılması eklenince, RHEL’in değerleri ve yaklaşımıyla daha uyumlu kendi uygulamasını geliştirmek zorunda kaldı
Örneğin Docker rootless çalışabilse de hâlâ bunu varsayılan olarak kullanmıyor. Sertleştirilmiş ortamlarda docker kullanıcı grubu da, grup olmadan çalıştırma yöntemi de güvenlik açısından birçok kullanım senaryosunda kabul edilmesi zor şeyler
İlk dönem Docker, ayrıcalıksız konteynerlerin en azından asgari düzeyde yalıtılmasını sağlama konusunda fazla isteksizdi ve sorunlar bilindikten sonra bile düzeltmesi uzun sürdü. Güvenlik duvarı ve ağ kurallarıyla, SELinux ile etkileşim biçimi de çok sorunlu. Güvenliği önemseyen, özel Linux sistem yöneticileri olan şirketlerde Docker yasağının nadir olmamasının nedeni bu
Daha en baştan tüm belgeler agresif biçimde kullanıcı dostu olmayan bir GUI kurulumuna yönlendiriyor. Açılışta ağır süreçler başlatıyor, nedense bir bulut hesabına kaydolmayı istiyor ve sözde açık kaynak ürünü işte kullanmamanız gerektiği konusunda bir de dırdır ediyor
“Yalnızca komut satırı Docker” kurmaya yönelik desteklenmeyen alternatif gereksiz derecede karmaşıktı ve en son denediğimde çoğu WSL VM varsayılan hâliyle bunu desteklemiyordu bile
Buna karşılık Podman için
winget install podmanyeterli ve sizi rahatsız etmiyor. Yalnızca bir konteyner çalıştırmanız gerektiğinde Podman VM’i başlatıyorsunuz; gerekmediğinde sistem eskisi gibi davranıyorBir compose dosyasıyla bir şey çalıştırmanız gerekiyorsa podman-compose var. Alışılmadık ayarları ele alamayabilir ama benim kullanımımda iyi çalıştı
Podman’ın düzgün yapamadığı şey aşağı yukarı VS Code entegrasyonu; ama Windows’ta Docker’ı uslu uslu çalışır hâle getirmenin zahmeti, birkaç VS Code kısayolunu kaybetmekten çok daha sinir bozucu olduğundan bu sorun olmuyor
Windows’ta konteynerler için varsayılan çözüm olarak Podman’ı öneririm. Docker kullanmak için nedenler ancak şirketinizin ücretini ödemesi ya da karmaşık bir compose yapılandırmanız olması gibi durumlar; öyleyse de Kubernetes’e geçmeye değebilir
Sistemi bozan şeyler yapıyor, rootless konusunda yıllarca zorlandı ve tedarikçiye bağımlılık da cabası
Podman açık, standartlara uyan ve Kubernetes ile de iyi örtüşen bir araç. Kolay konteyner pazarına önce çıktığı için geliştiricilerin Docker’a harcadığı emek akıl almaz derecede fazlaydı
Docker ortadan kalkarsa RedHat kendi kurumsal gündemini daha güçlü bir elle dayatabilir
Podman’ın avantajları var, ama RedHat’in Docker’daki her şeyi ikame etmeye çalıştığı süreçte iyi yürütülmemiş kısımlar da var
RedHat’in konteyner alanına yaklaşım geçmişine bakınca, katkı yapıp iyileştirebileceği birçok projede zaman ve emek harcamış, hatta boşa harcamış olduğu yanlar var
RedHat müşterileri için doğru olanı yapma gündemine sahip bir şirket değil; bu yüzden büyük resimde ne istediğinizi düşünmek gerekiyor
macOS için Podman’ın tek büyük eksiği, konteynerlerden host ağını kullanamamak. Ama konteynerlerden host ağını kullanmak istemek nadir görülen bir durum
Yine de konteyner içinde ağla ilgili deneyler yaparken host ile aynı host adını ve IP adresini korumak istiyorsanız bunu aklınızda bulundurmalısınız. Buna rağmen bu sınırlamayı aşarak kullanıyorum
Güvenliği önceleyen yaklaşım ve kararlar iyi görünüyor. Varsayılan ayarlarından itibaren güvenli olması ve docker compose ile de çalışması hoşuma gidiyor
Yine de Podman yeterince popüler olursa bir gün komutlar ve yml formatında kendi yoluna gidip gitmeyeceğini merak ediyorum. Şu anda Docker ve Docker compose dosya formatına yaslanan bir araç gibi görünüyor
Podman’da bir Swarm alternatifi olsa iyi olurdu. Şu anda orkestrasyon eksikliği yüzünden Kubernetes koltuk değneği gibi kullanılıyor hissi veriyor
Güvenliği iyi düşünen bir ekip, varsayılanlarından itibaren güvenli olmayan Kubernetes’i doktora konusu gibi didiklemek zorunda kalmadan, küçük ölçekte konteynerleri makul ve basit biçimde çalıştırmanın bir yolunu geliştirebilir gibi geliyor. Bunu yaparken Docker compose formatıyla uyumluluğu da koruyabilir
Rootless konteynerlerin ve yalıtılmış ad alanlarının önemli bir güvenlik özelliği olduğuna katılıyorum. Ancak bu Docker rootless ile de mümkün ve karmaşık değil. Sadece o şekilde yapılandırmak yeterli
Mevcut en iyi uygulamaların tümünü uygulayarak Mastodon'u docker rootless ile kurma hakkında bir yazı yazmıştım [1]
Docker kullanmaya devam etmenin avantajı daha erişilebilir olması. Daha fazla topluluk ve blog var, docker compose yapılandırmaları yaygın ve çevrenizde kullanmayı bilen kişi sayısı da daha fazla
Sonuçta Podman da Docker da ana makinenin yalıtılmış ad alanlarında süreç çalıştırıyor
[1]: https://du.nkel.dev/blog/2023-12-12_mastodon-docker-rootless...
Yanlış anlaşılmasın. Podman harika ve son zamanlarda Docker yerine onu kullanıyorum; ama başta basit bir Docker ikamesi sanıp kullanmaya başlayınca UID/GID eşlemeleri, SELinux ilkeleri, eksik DNS ayarları gibi konularda epey canım yandı
Sorunu düzeltmek için
system migrateçalıştırıp tüm yapılandırmayı bozduğum da birkaç kez oldu. Güvenlik ACL'leri, ID eşlemeleri ve etiketlerle ilgili ayrı bir düzeni varEv klasörü altında
chmod -Ryaparsanız muhtemelen tüm konteynerleriniz ölebilirSonuçtan memnunum ama Docker gibi “sadece çalışan” bir çözüm olmaktan uzaktı. Ben kullanmaya başladıktan sonra muhtemelen epey iyileşmiştir
Benim açımdan Docker'dan daha kolaydı. Görünüşe göre yukarıda yaşanan duruma kıyasla şimdi iyileşmiş
Büyük resme bakınca Podman, eski Linux gibi vazgeçilmez bir varlık hissi veriyor
Çok az kişi kullansa bile, sırf varlığıyla çok daha büyük kapalı kaynak yazılım kardeşlerinin korkunç şeyler yapmasını engelliyor
Burada “eski Linux” derken Linux'un daha az önemli hale geldiğini kastetmiyorum; aksine bugün çok daha vazgeçilmez ve merkezi hale geldiği için söylüyorum