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.
İçindekiler
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
# Portainer verilerini saklamak için volume oluştur
docker volume create portainer_data
Portainer CE Kurulumu
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
# 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:
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:
# 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
- Stacks → Add Stack
- Stack adı girin
- Docker Compose içeriğini yapıştırın veya Git repository URL'i girin
- Environment variables ekleyin
- Deploy the stack butonuna tıklayın
# Ö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
- Stack oluştururken Repository seçeneğini seçin
- Git URL girin:
https://github.com/user/repo - Branch ve compose dosya yolunu belirtin
- Otomatik güncelleme için GitOps updates etkinleştirin
Container Yönetimi
Container İşlemleri
Portainer arayüzünden container üzerinde yapabileceğiniz işlemler:
# 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:
- Containers → Container adına tıklayın
- Console sekmesi → Connect
- Shell seçin:
/bin/bashveya/bin/sh
# Container içinde çalıştırılabilecek komutlar:
ls -la /app
cat /etc/nginx/nginx.conf
nginx -t
env | grep DATABASE
Image Yönetimi
# 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
# 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
# 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
- Settings → Users → Add User
- Kullanıcı adı ve şifre belirleyin
- Rol atayın: Administrator veya Standard User
Ekip Oluşturma
# Portainer arayüzünden:
# Settings → Teams → Add Team
# Team adı: developers
# Üye ekle: kullanici1, kullanici2
Ortam Erişim Kontrolü
# 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
# 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:
# 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
# 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.
İlgili Makaleler
Coolify Kurulumu: Self-Hosted PaaS ile Uygulama Deployment
Coolify kurulumu, Docker ve Git entegrasyonu, uygulama deployment, veritabanı yönetimi, SSL sertifikaları, environment variables ve Heroku/Netlify alternatifi self-hosted PaaS.
Nextcloud Kurulumu: Self-Hosted Bulut Depolama ve İşbirliği
Nextcloud kurulumu Docker ile, Apache/Nginx yapılandırması, veritabanı kurulumu, SSL sertifikası, dosya senkronizasyonu, uygulama mağazası ve performans optimizasyonu.
Uptime Kuma Kurulumu: Self-Hosted Uptime Monitoring
Uptime Kuma kurulumu Docker ile, HTTP/TCP/DNS/ping monitörleme, bildirim entegrasyonları (Telegram, Discord, email), status page oluşturma ve alert yapılandırması.