Docker ve Container Yönetimi: En İyi Uygulamalar ve Pratik Rehber

Docker ve Container Yönetimi: En İyi Uygulamalar ve Pratik Rehber - Corelux
Paylaş:

Docker ve Container Yönetimi: En İyi Uygulamalar ve Pratik Rehber

Son Güncelleme: Mart 2026

Giriş: Bu makalede Docker ve genel olarak container (kapsül) teknolojilerinin ne olduğu, mimarisi, güvenlik ve performans için uygulanabilecek en iyi uygulamalar ile gerçek dünya dağıtım (deployment) örneklerini ele alacağız. Hedefimiz, sistem yöneticileri ve geliştiriciler için hem teorik hem de uygulamalı bir kapsayıcı yönetimi (container management) rehberi sunmaktır.

İçindekiler

Docker Nedir?

Docker, uygulamaları ve bağımlılıklarını bir arada paketleyip çalıştırmak için kullanılan bir container (kapsül) platformudur. Container'lar, işletim sistemi çekirdeğini (kernel) paylaşan, izole edilmiş kullanıcı alanları sağlayan hafif çalıştırma birimleridir. Bu sayede bir uygulama; geliştirme, test ve üretim (production) ortamlarında tutarlı şekilde çalışır.

Mimari ve Temel Kavramlar

Docker ekosisteminin temel bileşenleri ve Türkçe karşılıkları:

  • Image (görüntü): Çalıştırılabilir uygulama paketidir; uygulama kodu, bağımlılıklar ve çalışma zamanı içerir.
  • Container (kapsül): Image'dan başlatılan, izole edilmiş çalışma ortamıdır.
  • Registry (kayıt deposu): Image'ların saklandığı yer (ör. Docker Hub veya özel registry).
  • Dockerfile: Image oluşturmak için yazılan talimat dosyası.
  • Orchestration (orkestrasyon): Çoklu container'ların otomatik yönetimi (ör. Kubernetes).

Docker'ın Avantajları

Docker kullanmanın başlıca faydaları:

  • Tutarlılık: Geliştirme ve üretim ortamları arasında sürprizleri azaltır.
  • Hafiflik: Geleneksel sanal makinelerden (VM) daha az kaynak tüketir.
  • Taşınabilirlik: Image'lar farklı altyapılarda yeniden çalıştırılabilir.
  • Hızlı dağıtım: Image katmanları sayesinde daha hızlı başlatma.
  • Modülerlik: Mikroservis mimarileri için idealdir.

Kurulum ve Basit Dağıtım Örnekleri

Burada örnek bir Dockerfile ve basit bir docker-compose yapısı paylaşılacaktır. Bu örnek, PHP tabanlı bir web uygulamasını sunmak içindir.

Örnek Dockerfile (PHP-FPM + Nginx):

# Bu alan dokümantasyon amaçlıdır - gerçek dosya oluşturulurken uygun satır sonları kullanılmalıdır
FROM php:8.1-fpm
WORKDIR /var/www/html
COPY . /var/www/html
RUN docker-php-ext-install pdo pdo_mysql

Örnek docker-compose.yml (basit):

version: '3.8'
services:
  web:
    image: nginx:stable
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
      - ./public:/var/www/html:ro
  php:
    build: .
    volumes:
      - ./public:/var/www/html
  db:
    image: mysql:8
    environment:
      - MYSQL_ROOT_PASSWORD=secret

Pratik senaryo: Geliştirme ortamında bu yapı ile uygulamayı docker-compose up -d komutu ile ayağa kaldırırsınız. Üretimde ise imajları bir registry'ye itip orchestrator (orkestratör) ile yönetmeniz önerilir.

Orchestration: Kubernetes ve Alternatifler

Orkestrasyon (orkestrasyon) araçları, çok sayıda container'ı yönetmek, ölçeklemek ve güncellemek için kullanılır. En yaygın seçenekler:

  • Kubernetes: Ölçeklenebilirlik ve servis keşfi için endüstri standardıdır.
  • Docker Swarm: Docker ile entegre, daha basit bir orkestrasyon çözümüdür.
  • Nomad: Hafif ve esnek bir scheduler'dır.

Kubernetes kullanırken dikkat edilmesi gerekenler: namespace (ad alanı), deployments (dağıtımlar), services (servisler), configMap ve secret (gizli bilgiler) yönetimi. Ayrıca rolling update stratejileri ve readiness/liveness probe'ları yapılandırılmalıdır.

Güvenlik: En İyi Uygulamalar

Container güvenliği hem image oluşturma hem de runtime (çalışma zamanı) aşamalarında ele alınmalıdır.

  • Image Güvenliği: Minimal base image kullanın (ör. alpine, slim). Image'ları düzenli tarayın (vulnerabilities taraması) ve imaj katmanlarını optimize edin.
  • İzinler: Container'larda root kullanmaktan kaçının; non-root kullanıcı ile çalıştırın.
  • Network İzolasyonu: Gereksiz portları açmayın, ağ politikaları (network policies) ile trafik kısıtlayın.
  • Gizli Bilgiler: Şifreleri ve anahtarları environment variable yerine secret manager veya Kubernetes Secret ile yönetin.
  • Runtime Güvenliği: Seccomp, AppArmor ve SELinux profilleri kullanın; capability'leri sınırlandırın.
  • Image Signing (İmzalama): İmajların kaynağını doğrulamak için imzalama mekanizmaları kullanın.

Pratik tavsiye: CI/CD pipeline'ınıza image tarama (SCA) ve imza adımlarını ekleyin. Yine üretim için özel bir registry veya güvenli bir kayıt deposu tercih edin. Eğer yüksek performanslı altyapıya ihtiyaç varsa, Corelux'un Sanal Sunucu hizmetlerini inceleyebilirsiniz veya uzun süreli compute ihtiyaçlarınız için Kiralık Sunucu çözümlerini değerlendirebilirsiniz.

İzleme ve Log Yönetimi

Container tabanlı sistemlerde izleme ve log yönetimi kritik öneme sahiptir. Önerilen bileşenler:

  • Metric Koleksiyonu: Prometheus ile metrik toplayın.
  • Log Yönetimi: ELK/EFK (Elasticsearch, Fluentd/Fluent Bit, Kibana) veya Loki ile merkezi loglama kurun.
  • Tracing (izleme): Jaeger veya Zipkin ile dağıtık izleme uygulayın.
  • Alerting (uyarı): Prometheus Alertmanager veya PagerDuty entegrasyonları ile kritik durumlar için alarmlar oluşturun.

Örnek kullanım: Prometheus Node Exporter ile host metrikleri, cAdvisor ile container metrikleri toplanır; ardından Grafana ile paneller oluşturulur. Bu sayede CPU, bellek, I/O ve ağ metriklerini gerçek zamanlı izleyebilir, anormalliklerde otomatik bildirim alabilirsiniz.

Performans ve Kaynak Yönetimi

Performans için dikkat edilecek noktalar:

  • Kaynak Limitleri: CPU ve bellek limitleri belirleyin (ör. --cpus, --memory veya Kubernetes resource requests/limits).
  • Swap Yönetimi: Swap kullanımı performansı olumsuz etkileyebilir; üretimde swap kapatılması veya dikkatli yapılandırılması önerilir.
  • Storage Seçimi: Yoğun I/O gerektiren uygulamalar için hızlı NVMe diskler tercih edin; Corelux kiralık sunucu çözümleri ile yüksek performanslı disk seçeneklerini değerlendirebilirsiniz.
  • Katmanlı Image Tasarımı: Image boyutunu küçültmek için gereksiz dosyaları temizleyin ve multi-stage build kullanın.

Karşılaştırma: Docker vs Sanal Makine (VM)

Özellik Docker (Container) Sanal Makine (VM)
İzolelik İşletim sistemi çekirdeğini paylaşır; hafif izolasyon. Tam izolasyon; farklı kernel mümkündür.
Kaynak Kullanımı Düşük; daha az overhead. Yüksek; hypervisor overhead.
Başlatma Süresi Hızlı (saniyeler). Yavaş (dakikaya kadar).
Uygulama Türü Mikroservisler, kısa ömürlü süreçler. Stateful uygulamalar, tam işletim sistemi gereksinimleri.

Sıkça Sorulan Sorular

Docker imajını nasıl küçültürüm?

Katmanları azaltarak ve multi-stage build kullanarak, gereksiz paketleri kaldırarak ve minimal base image (ör. alpine) tercih ederek imaj boyutunu küçültebilirsiniz.

Container'larda veri nerede saklanmalı?

Kalıcı veriler için volume (hacim) veya dışsal bir blok depolama (örn. network attached storage) kullanın. Konteyner içindeki veriler ephemeral (geçici) olmalıdır.

Container güvenliği için en hızlı adım nedir?

İmaj taraması yapmak ve container'ları non-root kullanıcıyla çalıştırmak hızlı ve etkili başlangıç adımlarıdır. Ayrıca varsayılan portları sınırlamak da önemlidir.

Kubernetes olmadan üretimde scaling (ölçekleme) yapabilir miyim?

Basit ihtiyaçlar için Docker Swarm veya yönetilen container servisleri (ör. sağlayıcıların orchestration çözümleri) kullanılabilir. Ancak karmaşık mikroservis yapılarında Kubernetes daha esnek çözümler sunar.

Log ve metrik toplama için hafif bir çözüm önerir misiniz?

Fluent Bit (log) ve Prometheus (metrik) kombinasyonu hafif ve etkili bir çözümdür. Grafana ile görselleştirme ekleyerek operasyonel görünürlüğünüzü artırabilirsiniz.

Sonuç

Özetle, Docker ve container teknolojileri modern uygulama dağıtımlarında esneklik, hız ve verimlilik sağlar. Ancak güvenlik, izleme ve kaynak yönetimi gibi alanlarda doğru uygulamalar yoksa risk oluşturabilir. Üretim ortamı için plan yaparken image güvenliği, kaynak limitleri ve izleme konularını önceliklendirin. Daha büyük altyapı ihtiyaçlarınız varsa Corelux'un Türkiye VPS Sunucu veya Türkiye Kiralık Sunucu çözümlerini inceleyebilir, uygulamalarınız için SSL Sertifikası hizmetimizle güvenliği tamamlayabilirsiniz.

Bu rehber, hem yeni başlayanlar hem de tecrübeli sistem yöneticileri için pratik tavsiyeler ve uygulanabilir örnekler sunar. Uygulama senaryolarınıza göre daha derin adımlar (ör. CI/CD entegrasyonu, audit/uygulama güvenlik taramaları) planlayarak ileri seviye optimizasyon yapabilirsiniz.

Yazar

Boran BAR

Chat on WhatsApp