Docker, konteynerlerle çalışmayı çok güçlü hale getirir; ama günlük yönetimin çoğu terminalde uzun komutlar yazmaya dayanır. Hangi konteynerler çalışıyor, hangi imaj güncel, bir konteynerin logları neydi, şu volume'ü kim kullanıyor gibi soruların cevabını her seferinde komut satırından aramak yorucu olabilir. İşte Portainer tam bu noktada devreye giren, Docker (ve Kubernetes) ortamınızı şık bir web arayüzünden yönetmenizi sağlayan açık kaynaklı bir yönetim panelidir.
Bu rehberde Portainer'ın ne olduğunu, hangi soruna çözüm getirdiğini, temel özelliklerini, ücretsiz ve ticari sürümleri arasındaki farkı ve kimler için uygun olduğunu ele alacağız. Ardından kendi sunucunuza nasıl kuracağınızı, ilk giriş adımlarını, bir stack (uygulama yığını) dağıtımını, Docker soketi erişiminin güvenlik boyutunu ve ters vekil kurulumunu pratik örneklerle inceleyeceğiz. Docker'a henüz yabancıysanız önce Docker başlangıç rehberimize göz atmanız faydalı olur.
Portainer nedir, ne işe yarar?#
Portainer, konteyner tabanlı ortamlar için tasarlanmış, hafif bir web tabanlı yönetim panelidir. En basit tanımıyla, Docker'ın komut satırında yaptığınız işlerin büyük kısmını fare tıklamalarıyla yapmanızı sağlayan görsel bir kontrol merkezidir. Docker'ın yanı sıra Docker Swarm ve Kubernetes ortamlarını da yönetebilir.
Portainer'ın kendisi de bir Docker konteyneri olarak çalışır. Kurulduğunda, üzerinde çalıştığı Docker sunucusuna (host) bağlanır ve o sunucudaki tüm konteynerleri, imajları, ağları ve volume'leri arayüz üzerinden gösterir. Tek bir sunucuyu yönetebileceğiniz gibi, birden fazla uzak Docker ortamını tek bir Portainer panelinden yönetmeniz de mümkündür.
Aracın en büyük çekiciliği, Docker'ın öğrenme eğrisini yumuşatmasıdır. Komutları ezberlemeden konteynerleri başlatabilir, durdurabilir, yeniden başlatabilir; logları okuyabilir; hatta bir konteynerin içine terminal açabilirsiniz. Bu, hem Docker'a yeni başlayanlar hem de günlük operasyonu hızlandırmak isteyen deneyimli ekipler için değerlidir.
Portainer hangi sorunu çözer?#
Portainer'ın çözdüğü sorunları birkaç başlıkta toparlayabiliriz.
Komut satırı yükünü azaltır. docker ps, docker logs, docker exec, docker inspect gibi komutları sürekli yazmak yerine, tüm bu bilgilere tek bir panelden ulaşırsınız. Bir konteynerin durumu, kaynak kullanımı, portları ve logları göz önündedir. Bu, özellikle acil bir sorunu incelerken zaman kazandırır.
Ekip erişimini kolaylaştırır. Sunucuya SSH ile bağlanıp komut satırında çalışmak, teknik olmayan ekip üyeleri için ürkütücü olabilir. Portainer, kullanıcı ve rol tanımlayarak ekip üyelerine sınırlı ve güvenli bir erişim vermenizi sağlar. Böylece bir geliştiriciye yalnızca belirli konteynerleri yeniden başlatma yetkisi verebilir, sunucunun tamamına root erişimi açmak zorunda kalmazsınız.
Görünürlük sağlar. Bir sunucuda onlarca konteyner çalışıyorsa, hepsinin durumunu zihinde tutmak zordur. Portainer bu karmaşayı düzenli bir tabloya dönüştürür; hangi imajın güncel olduğunu, hangi volume'ün ne kadar yer kapladığını ve ağların nasıl bağlandığını tek bakışta görürsünüz.
Temel özellikler#
Portainer, konteyner yönetiminin neredeyse tüm yönlerini kapsayan geniş bir özellik seti sunar:
- Konteyner yönetimi: Konteynerleri başlatma, durdurma, yeniden başlatma, silme; kaynak (CPU/RAM) kullanımını canlı izleme ve port eşlemelerini görme.
- İmaj yönetimi: Docker Hub veya özel kayıtlardan imaj indirme (pull), yerel imajları listeleme ve kullanılmayanları temizleme.
- Volume ve network yönetimi: Kalıcı veri birimleri (volume) ve ağları oluşturma, inceleme ve silme.
- Stack dağıtımı:
docker-composebenzeri yapılandırmaları arayüzden yapıştırıp tek tıkla dağıtma. Portainer bu yapıları "stack" olarak adlandırır ve çok konteynerli uygulamaları toplu yönetmenizi sağlar. - Loglar ve konsol erişimi: Bir konteynerin canlı loglarını okuma ve içine
execile terminal (konsol) açarak komut çalıştırma. - Uygulama şablonları: Sık kullanılan uygulamaları (veritabanları, web sunucuları vb.) hazır şablonlardan hızlıca dağıtma.
- Kullanıcı ve rol yönetimi: Kullanıcılar, takımlar ve erişim kontrol listeleri (RBAC) ile kimin neye erişebileceğini belirleme.
- Çoklu ortam yönetimi: Birden fazla Docker sunucusunu, Swarm kümesini ya da Kubernetes ortamını tek panelden yönetme.
Bu özellikler bir araya geldiğinde Portainer, tek başına bir sunucudaki birkaç konteynerden, birden çok ortama yayılmış karmaşık kurulumlara kadar geniş bir yelpazeye hitap eder.
CE ve Business Edition farkı#
Portainer iki sürümde sunulur ve hangisinin size uygun olduğunu bilmek önemlidir.
Portainer CE (Community Edition): Tamamen açık kaynak ve ücretsizdir. Yukarıda saydığımız temel özelliklerin büyük çoğunluğunu içerir ve bireysel kullanıcılar ile küçük ekipler için fazlasıyla yeterlidir. Konteyner, imaj, volume, network ve stack yönetimi, temel kullanıcı yönetimi ve çoklu ortam desteği bu sürümde bulunur.
Portainer Business Edition (BE): Ücretli kurumsal sürümdür. CE'nin üzerine, büyük kurumların ihtiyaç duyduğu gelişmiş özellikleri ekler: daha ayrıntılı rol tabanlı erişim kontrolü (RBAC), harici kimlik doğrulama sağlayıcılarıyla (LDAP, OAuth, SAML) entegrasyon, kayıt yönetimi, denetim (audit) günlükleri ve öncelikli teknik destek. Belirli bir düğüm sayısına kadar ücretsiz kullanılabilen bir katmanı da vardır.
Kısaca: çoğu bireysel kullanıcı ve küçük ekip için CE yeterlidir. Kurumsal ölçekte, sıkı erişim denetimi ve merkezi kimlik yönetimi gerekiyorsa BE'yi değerlendirmek mantıklıdır.
Kimler için uygun?#
Portainer geniş bir kitleye hitap eder, ancak özellikle şu profillere değer katar:
- Docker'a yeni başlayanlar: Komut satırına henüz alışmamış olanlar için görsel arayüz, öğrenme sürecini hızlandırır.
- Küçük ekipler ve ajanslar: Birden fazla müşteri projesini ve konteynerini tek panelden düzenli biçimde yönetmek isteyenler.
- Kendi sunucusunu yöneten bireyler: VPS üzerinde birkaç self-hosted uygulama çalıştıran ve bunları kolayca yönetmek isteyen kişiler.
- DevOps ekipleri: Ekip üyelerine rol tabanlı, sınırlı erişim vererek sunucu güvenliğini korumak isteyen ekipler.
Ortak nokta, Docker'ın gücünü kullanmak isteyip günlük yönetimini daha erişilebilir ve görsel hale getirmek isteyen herkestir.
Kurulum#
Portainer'ın kurulumu şaşırtıcı derecede basittir; birkaç komutla dakikalar içinde tamamlanır. Öncelikle Portainer'ın verilerini saklayacağı kalıcı bir volume oluşturur, ardından Portainer CE konteynerini başlatırsınız:
docker volume create portainer_data
docker run -d \
-p 9443:9443 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Bu komutta iki bağlama (mount) dikkat çeker. Birincisi portainer_data volume'ü, Portainer'ın kendi ayarlarını kalıcı olarak saklar. İkincisi /var/run/docker.sock bağlaması ise Portainer'ın Docker'ı yönetebilmesini sağlayan kritik bağlantıdır; birazdan bunun güvenlik boyutuna değineceğiz. Portainer varsayılan olarak 9443 portunda, HTTPS üzerinden yayın yapar.
Aynı kurulumu docker-compose ile de tanımlayabilirsiniz:
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
ports:
- "9443:9443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
volumes:
portainer_data:
Bu dosyayı bir dizine kaydedip docker compose up -d komutuyla çalıştırdığınızda Portainer ayağa kalkar. Donanım gereksinimleri son derece düşüktür; Portainer'ın kendisi birkaç yüz megabayt bellekle çalışır, asıl kaynak tüketimi yönettiğiniz konteynerlerden gelir.
İlk giriş ve admin parolası#
Kurulum tamamlandıktan sonra tarayıcınızdan https://sunucu-ip:9443 adresine giderek Portainer'ın karşılama ekranına ulaşırsınız. Burada ilk yönetici (admin) hesabınızı oluşturmanız istenir; güçlü bir parola belirleyin.
Burada önemli bir ayrıntı vardır: Portainer, güvenlik gerekçesiyle ilk yönetici hesabının kurulumdan sonraki kısa bir süre içinde (birkaç dakika) oluşturulmasını ister. Bu zaman aşımına takılırsanız, Portainer güvenlik nedeniyle kurulumu kilitler ve konteyneri yeniden başlatmanız gerekir. Bu önlem, panelin kurulup unutulması ve bu arada bir başkasının gelip yönetici hesabını kapması ihtimaline karşı tasarlanmıştır. Bu yüzden Portainer'ı kurar kurmaz hemen tarayıcıdan girip yönetici hesabınızı oluşturun.
Yönetici hesabını oluşturduktan sonra Portainer sizi yerel Docker ortamınıza bağlar ve tüm konteynerlerinizi, imajlarınızı ve volume'lerinizi listeleyen kontrol paneline yönlendirir.
Bir stack dağıtım örneği#
Portainer'ın en kullanışlı yönlerinden biri, çok konteynerli uygulamaları "stack" olarak tek seferde dağıtabilmesidir. Arayüzde Stacks > Add stack yolunu izleyip bir docker-compose yapılandırmasını doğrudan yapıştırarak dağıtım yapabilirsiniz. Örneğin basit bir web uygulaması ve veritabanı yığını şöyle görünebilir:
services:
web:
image: nginx:latest
ports:
- "8080:80"
restart: always
db:
image: postgres:16
environment:
- POSTGRES_PASSWORD=degistirin_guclu_bir_parola
volumes:
- db_data:/var/lib/postgresql/data
restart: always
volumes:
db_data:
Bu yapılandırmayı stack olarak dağıttığınızda Portainer, her iki konteyneri de oluşturur, birbirine bağlar ve panelde tek bir grup olarak yönetmenizi sağlar. Daha sonra bu stack'i tek tıkla güncelleyebilir, durdurabilir veya silebilirsiniz. Bu yaklaşım, karmaşık uygulamaları düzenli bir birim olarak ele almayı çok kolaylaştırır.
Docker soketi erişimi ve güvenlik#
Portainer'ın en güçlü yanı, aynı zamanda en dikkat edilmesi gereken yönüdür. Kurulum sırasında bağladığımız /var/run/docker.sock, Docker sunucusunu kontrol eden ana arayüzdür. Bu sokete erişebilen her uygulama, pratikte sunucu üzerinde neredeyse sınırsız yetkiye sahip olur; yeni konteynerler oluşturabilir, host dosya sistemine erişecek şekilde volume bağlayabilir ve dolaylı olarak root düzeyinde işlem yapabilir.
Bunun somut anlamı şudur: Portainer paneline erişebilen bir kişi, aslında sunucunuza root erişimi olan biri gibidir. Bu yüzden Portainer'ı güvence altına almak, sunucunuzu güvence altına almak kadar önemlidir. Alınması gereken temel önlemler:
- Paneli internete açıkta bırakmayın. Portainer arayüzünü doğrudan herkese açık bir portta yayınlamak yerine bir ters vekilin ardına alın veya erişimi güvenlik duvarı ve IP kısıtlamasıyla sınırlayın.
- Güçlü parola ve 2FA kullanın. Yönetici hesabı için güçlü bir parola belirleyin; Business Edition kullanıyorsanız iki adımlı doğrulamayı etkinleştirin.
- Rol tabanlı erişim uygulayın. Ekip üyelerine ihtiyaçları kadar yetki verin; herkese yönetici yetkisi vermekten kaçının.
- Güncel kalın. Portainer'ı düzenli olarak güncelleyerek bilinen güvenlik açıklarını kapatın.
- Sunucuyu sağlamlaştırın. Panelin güvenliği sunucunun güvenliğinden bağımsız değildir; genel sunucu sertleştirmesi ihmal edilmemelidir.
Bu önlemler, Portainer'ın sunduğu kolaylığı bir güvenlik açığına dönüştürmeden kullanmanın anahtarıdır.
Ters vekil ve SSL#
Portainer varsayılan olarak kendi kendine imzaladığı bir sertifikayla 9443 portunda HTTPS sunar; ancak tarayıcı bu sertifikaya güvenmediği için uyarı gösterir. Üretim ortamında daha temiz bir kurulum için Portainer'ın önüne bir ters vekil (reverse proxy) koyup güvenilir bir sertifikayla yayınlamak en iyi yaklaşımdır. Böylece panele standart bir alan adı üzerinden, geçerli bir HTTPS sertifikasıyla erişirsiniz.
Nginx bu iş için en yaygın tercihtir; kurulum ayrıntıları için Ubuntu üzerinde Nginx kurulumu rehberimize bakabilirsiniz. Ücretsiz ve otomatik yenilenen bir sertifika için ise Let's Encrypt ile ücretsiz SSL rehberimizi inceleyebilirsiniz. Portainer bir WebSocket bağlantısı kullandığından, ters vekil yapılandırmanızda WebSocket geçişini (upgrade başlıkları) etkinleştirmeyi unutmayın; aksi halde konteyner konsolu ve canlı loglar düzgün çalışmaz.
Servislerinizin ayakta olduğundan emin olmak için Portainer'ın yanına bir izleme aracı da eklemek isterseniz, Uptime Kuma rehberimiz bu konuda pratik bir başlangıç sunar.
Alternatifler#
Portainer alanındaki tek seçenek değildir. İhtiyacınıza göre değerlendirebileceğiniz birkaç alternatif vardır. Yacht, daha sade ve şablon odaklı bir arayüz sunar; özellikle self-hosted uygulama dağıtımını kolaylaştırmaya odaklanır. Dockge ise docker-compose dosyalarını yönetmeye özel, hafif ve modern bir arayüzdür; compose tabanlı kurulumları düzenlemekte pratiktir. Bu araçlar Portainer kadar kapsamlı olmasa da daha basit senaryolarda yeterli olabilir. Yine de özellik zenginliği, olgunluk ve topluluk desteği açısından Portainer bu alanda öne çıkan çözüm olmayı sürdürür.
Sıkça Sorulan Sorular#
Portainer ücretsiz mi?#
Portainer'ın Community Edition (CE) sürümü tamamen açık kaynak ve ücretsizdir; günlük konteyner yönetimi için gereken özelliklerin büyük çoğunluğunu içerir. Business Edition ise ücretli kurumsal sürümdür ve gelişmiş erişim kontrolü, harici kimlik doğrulama ve öncelikli destek gibi ek özellikler sunar. Çoğu bireysel kullanıcı ve küçük ekip için CE fazlasıyla yeterlidir.
Portainer'a erişen kişi sunucuma tam erişim sağlar mı?#
Pratik olarak evet ve bu çok önemli bir noktadır. Portainer, Docker soketine (docker.sock) erişerek çalışır ve bu soket üzerinden yeni konteynerler oluşturmak, host dosya sistemine erişmek mümkündür. Bu nedenle Portainer paneline erişebilen biri, sunucu üzerinde root düzeyinde yetkiye sahip biri gibi düşünülmelidir. Bu yüzden paneli güvenlik duvarı, güçlü parola ve ters vekil ile korumak zorunludur.
İlk giriş sırasında parola belirleme ekranı neden zaman aşımına uğradı?#
Portainer, güvenlik gerekçesiyle ilk yönetici hesabının kurulumdan sonraki kısa bir süre içinde oluşturulmasını ister. Bu süreyi kaçırırsanız panel kendini kilitler. Çözüm basittir; Portainer konteynerini yeniden başlatmanız yeterlidir. Ardından hemen tarayıcıdan girip yönetici hesabınızı oluşturun. Bu önlem, kurulup unutulan bir panelin bir başkası tarafından ele geçirilmesini engellemek için tasarlanmıştır.
Portainer ile birden fazla sunucuyu yönetebilir miyim?#
Evet. Portainer, tek bir panelden birden fazla Docker ortamını, Docker Swarm kümesini veya Kubernetes ortamını yönetmeyi destekler. Uzak ortamları eklemek için Portainer Agent adı verilen küçük bir bileşeni ilgili sunuculara kurarsınız. Böylece tüm konteyner altyapınızı merkezi tek bir arayüzden izleyip yönetebilirsiniz.
Portainer'ı kaldırırsam konteynerlerim silinir mi?#
Hayır. Portainer yalnızca bir yönetim panelidir; konteynerlerinizi Docker'ın kendisi çalıştırır. Portainer konteynerini kaldırsanız bile yönettiğiniz diğer konteynerler, imajlar ve volume'ler yerinde kalır ve çalışmaya devam eder. Portainer'ı yeniden kurup aynı Docker ortamına bağladığınızda tüm kaynaklarınızı yeniden görürsünüz.
Portainer'ı üretim ortamında kullanabilir miyim?#
Evet, Portainer üretim ortamlarında yaygın olarak kullanılır. Ancak güvenlik önlemlerini eksiksiz uygulamanız şarttır; paneli internete açıkta bırakmamak, güçlü kimlik doğrulama kullanmak, ters vekil ardına almak ve güncel tutmak temel kurallardır. Bu önlemler alındığında Portainer, üretim ortamı için güvenilir ve olgun bir yönetim aracıdır.
Kapanış#
Portainer, Docker'ın gücünü komut satırının karmaşıklığına boğulmadan kullanmanın en pratik yollarından biridir. Konteynerlerinizi, imajlarınızı ve stack'lerinizi görsel bir panelden yönetmek, hem yeni başlayanlar için öğrenmeyi hızlandırır hem de deneyimli ekipler için günlük operasyonu kolaylaştırır. Yeter ki panelin Docker soketine erişiminin taşıdığı yetkiyi unutmayın ve güvenlik önlemlerini eksiksiz uygulayın.
Portainer'ı ve yöneteceğiniz konteynerleri barındırmak için sağlam bir sunucuya ihtiyacınız var. Docker tabanlı iş yükleri için sanal sunucu (VDS) ve genel sunucu çözümlerimizi inceleyebilir, kuruluma tek tıkla başlamak için hazır uygulamalar sunan App Center kataloğumuza göz atabilirsiniz. Konteyner altyapınızı bugün daha yönetilebilir bir hale getirebilirsiniz.