Ana içeriğe geç
Kategoriye Dön

Portainer ile Docker Yönetimi: Web Arayüzlü Konteyner Kontrolü

Portainer CE kurulumu, Docker ve Kubernetes yönetimi, stack deployment, volume/network yönetimi, kullanıcı yetkilendirme, webhook ve GitOps entegrasyonu.

Okuma süresi: 13 dk Self-Hosting
portainerdockerkubernetesweb arayüzükonteyner yönetimiself-hosting
Yazar
REXE Teknoloji Ağ ve Güvenlik Ekibi
Editör
REXE Teknoloji Teknik Yayın Editörü
İlk yayın
Son güncelleme

Portainer ile Docker Yönetimi: Web Arayüzlü Konteyner Kontrolü

Portainer, Docker ve Kubernetes ortamlarını web tarayıcısı üzerinden yönetmenizi sağlayan açık kaynaklı bir konteyner yönetim platformudur. Komut satırı bilgisi gerektirmeden container başlatma, durdurma, log görüntüleme ve stack deploy etme gibi işlemleri kolayca yapabilirsiniz.

Portainer CE Nedir?

Portainer Community Edition (CE) ücretsiz ve açık kaynaklıdır. Temel özellikleri:

  • Container Yönetimi: Başlatma, durdurma, yeniden başlatma, silme
  • Image Yönetimi: Pull, push, build, tag işlemleri
  • Stack Deploy: Docker Compose dosyalarını web arayüzünden deploy etme
  • Volume/Network: Depolama ve ağ yönetimi
  • Log Görüntüleme: Gerçek zamanlı container logları
  • Konsol Erişimi: Container içine web terminal ile bağlanma
  • Kullanıcı Yönetimi: Rol tabanlı erişim kontrolü

Kurulum

Docker Volume Oluşturma

hljs bash
# Portainer verilerini saklamak için volume oluştur
docker volume create portainer_data

Portainer CE Kurulumu

hljs bash
docker run -d \
  --name portainer \
  --restart=always \
  -p 8000:8000 \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

Kurulum tamamlandıktan sonra:

https://SUNUCU_IP:9443

İlk girişte admin şifresi belirlemeniz gerekir. 5 dakika içinde giriş yapmazsanız Portainer güvenlik nedeniyle yeniden başlatılması gerekir.

Docker Compose ile Kurulum

hljs yaml
# portainer-compose.yml
version: '3.8'
services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: always
    ports:
      - "8000:8000"
      - "9443:9443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
    security_opt:
      - no-new-privileges:true

volumes:
  portainer_data:
hljs bash
docker compose -f portainer-compose.yml up -d

Docker Socket Bağlantısı

Portainer, Docker daemon ile /var/run/docker.sock üzerinden iletişim kurar. Bu socket'e erişim Docker üzerinde tam kontrol sağlar:

hljs bash
# Socket izinlerini kontrol et
ls -la /var/run/docker.sock
# srw-rw---- 1 root docker 0 ... /var/run/docker.sock

# Kullanıcıyı docker grubuna ekle (gerekirse)
usermod -aG docker $USER

Docker socket'e erişim root yetkisine eşdeğerdir. Portainer'ı güvenilir ağlarda çalıştırın ve güçlü şifre kullanın.

Stack (Docker Compose) Deploy Etme

Web Arayüzünden Stack Deploy

  1. StacksAdd Stack
  2. Stack adı girin
  3. Docker Compose içeriğini yapıştırın veya Git repository URL'i girin
  4. Environment variables ekleyin
  5. Deploy the stack butonuna tıklayın
hljs yaml
# Örnek: WordPress Stack
version: '3.8'
services:
  wordpress:
    image: wordpress:latest
    restart: always
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: ${DB_USER}
      WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress_data:/var/www/html
    depends_on:
      - db

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: ${DB_USER}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
    volumes:
      - db_data:/var/lib/mysql

volumes:
  wordpress_data:
  db_data:

Git Repository'den Stack Deploy

  1. Stack oluştururken Repository seçeneğini seçin
  2. Git URL girin: https://github.com/user/repo
  3. Branch ve compose dosya yolunu belirtin
  4. Otomatik güncelleme için GitOps updates etkinleştirin

Container Yönetimi

Container İşlemleri

Portainer arayüzünden container üzerinde yapabileceğiniz işlemler:

hljs bash
# Portainer arayüzünde:
# Containers → container seç → Actions:
# - Start / Stop / Restart / Kill / Pause
# - Logs (gerçek zamanlı)
# - Console (web terminal)
# - Inspect (JSON detayları)
# - Stats (CPU, RAM, Network kullanımı)

Web Terminal (Exec Console)

Container içine web tarayıcısından terminal açabilirsiniz:

  1. Containers → Container adına tıklayın
  2. Console sekmesi → Connect
  3. Shell seçin: /bin/bash veya /bin/sh
hljs bash
# Container içinde çalıştırılabilecek komutlar:
ls -la /app
cat /etc/nginx/nginx.conf
nginx -t
env | grep DATABASE

Image Yönetimi

hljs bash
# Portainer arayüzünden:
# Images → Pull Image
# Registry: docker.io (varsayılan)
# Image: nginx:latest

# Özel registry eklemek için:
# Registries → Add Registry
# URL: registry.example.com
# Kullanıcı adı ve şifre girin

Volume Yönetimi

hljs bash
# Portainer arayüzünden:
# Volumes → Add Volume
# Name: myapp_data
# Driver: local

# Volume detayları:
# - Hangi container'ların kullandığı
# - Disk kullanımı
# - Mount point: /var/lib/docker/volumes/myapp_data/_data

Network Yönetimi

hljs bash
# Portainer arayüzünden:
# Networks → Add Network
# Name: myapp-network
# Driver: bridge
# Subnet: 172.20.0.0/16

# Container'ları ağa bağlama:
# Container → Network → Join Network

Kullanıcı ve Ekip Yönetimi

Kullanıcı Oluşturma

  1. SettingsUsersAdd User
  2. Kullanıcı adı ve şifre belirleyin
  3. Rol atayın: Administrator veya Standard User

Ekip Oluşturma

hljs bash
# Portainer arayüzünden:
# Settings → Teams → Add Team
# Team adı: developers
# Üye ekle: kullanici1, kullanici2

Ortam Erişim Kontrolü

hljs bash
# Environments → Environment seç → Access Control
# Belirli kullanıcı veya ekiplere erişim ver
# Rol: Manager (tam yetki) veya Operator (sınırlı)

Webhook ile Otomatik Güncelleme

hljs bash
# Stack veya Service için webhook oluşturma:
# Stack → Stack adı → Webhooks
# Webhook URL kopyala

# GitHub Actions'da kullanım:
curl -X POST https://portainer.example.com/api/webhooks/WEBHOOK_TOKEN

# GitLab CI'da kullanım:
wget --post-data '' https://portainer.example.com/api/webhooks/WEBHOOK_TOKEN

Edge Agent (Uzak Sunucu Yönetimi)

Firewall arkasındaki sunucuları yönetmek için Edge Agent kullanın:

hljs bash
# Portainer'da:
# Environments → Add Environment → Edge Agent
# Edge ID ve Edge Key kopyala

# Uzak sunucuda Edge Agent kur:
docker run -d \
  --name portainer_edge_agent \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /var/lib/docker/volumes:/var/lib/docker/volumes \
  -v /:/host \
  -v portainer_agent_data:/data \
  -e EDGE=1 \
  -e EDGE_ID=EDGE_ID_BURAYA \
  -e EDGE_KEY=EDGE_KEY_BURAYA \
  -e EDGE_INSECURE_POLL=1 \
  portainer/agent:latest

Portainer Güncelleme

hljs bash
# Mevcut container'ı durdur ve sil
docker stop portainer
docker rm portainer

# En son image'ı çek
docker pull portainer/portainer-ce:latest

# Yeniden başlat (aynı komutla, veriler volume'da korunur)
docker run -d \
  --name portainer \
  --restart=always \
  -p 8000:8000 \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

REXE sunucularında Portainer kurarak tüm Docker container'larınızı tek bir web arayüzünden yönetebilirsiniz. Özellikle birden fazla servis çalıştıran sunucularda büyük kolaylık sağlar.

Sık Sorulan Sorular

Portainer'a 9443 portundan erişemiyorum.

Sunucu firewall'unda 9443 portunu açın: 'ufw allow 9443/tcp'. Container'ın çalıştığını 'docker ps | grep portainer' ile kontrol edin. Eğer HTTP kullanmak istiyorsanız 9000 portunu da açın ve '-p 9000:9000' parametresini ekleyin.

Portainer admin şifresini unuttum, nasıl sıfırlarım?

Portainer container'ını durdurun. 'docker run --rm -v portainer_data:/data portainer/helper-reset-password' komutuyla şifreyi sıfırlayın. Yeni geçici şifre ekranda gösterilir. Portainer'ı yeniden başlatın ve geçici şifreyle giriş yapıp yeni şifre belirleyin.

Stack deploy ederken 'permission denied' hatası alıyorum.

Docker socket izinlerini kontrol edin: 'ls -la /var/run/docker.sock'. Portainer container'ının socket'e erişimi olduğundan emin olun. Eğer SELinux veya AppArmor aktifse, socket mount için ':z' veya ':Z' flag'i ekleyin: '-v /var/run/docker.sock:/var/run/docker.sock:z'.

Portainer'da container logları görünmüyor.

Container'ın log driver'ının 'json-file' veya 'local' olduğundan emin olun. 'docker inspect CONTAINER_ID | grep LogConfig' ile kontrol edin. Eğer 'none' log driver kullanılıyorsa loglar görüntülenemez. docker-compose.yml'de logging driver'ı açıkça belirtin.

Portainer'da birden fazla Docker ortamı nasıl yönetirim?

Environments menüsünden yeni ortam ekleyin. Aynı sunucudaki Docker için 'Local' seçin. Uzak sunucular için 'Docker Standalone' veya 'Docker Swarm' seçip TCP endpoint girin (2375/2376 portu). Güvenli bağlantı için TLS sertifikası kullanın. Edge Agent ile firewall arkasındaki sunuculara da bağlanabilirsiniz.

Portainer CE ile Kubernetes yönetimi mümkün mü?

Evet, Portainer CE Kubernetes desteği sunar. Environments → Add Environment → Kubernetes seçeneğiyle kubeconfig dosyanızı yükleyin veya agent kurulumu yapın. Namespace, deployment, service, ingress ve pod yönetimini web arayüzünden yapabilirsiniz. Ancak gelişmiş Kubernetes özellikleri için Portainer Business Edition gerekebilir.

İlgili Makaleler

Ağ TrafiğiGelen GbpsGiden Gbps