Container

Eş anlamlılar: Konteyner

Container, bir uygulamayı ve tüm bağımlılıklarını tek bir paket içine toplayıp izole ortamlarda çalıştıran hafif sanallaştırma teknolojisidir. Host kernel'i paylaşır ama user-space'i ayrıdır. Docker en yaygın container platformudur.

Container Nedir?

Container (konteyner), bir uygulamayı — kodunu, kütüphanelerini, yapılandırmasını, runtime'ını — tek bir izole paket içinde toplayan ve herhangi bir uyumlu sistemde çalıştırılabilen hafif sanallaştırma birimidir. VM'lerin aksine her container'a ayrı OS yüklenmez; tüm container'lar host sistemin Linux kernel'ini paylaşır, ancak user-space (dosya sistemi, process list, network) izoledir.

Container vs VM

  • VM: Tam OS, ayrı kernel, GB'lar disk, dakikalar başlatma
  • Container: Uygulama + bağımlılıklar, kernel paylaşır, MB'lar disk, saniyeler başlatma
  • İzolasyon: VM daha güçlü (hypervisor); Container daha zayıf (namespace)
  • Yoğunluk: Container 10-100x daha fazla
  • Performans: Container native'e yakın

Container Teknolojileri

  • Docker: En yaygın, standart de facto
  • Podman: Rootless Docker alternatifi (Red Hat)
  • containerd: Düşük seviyeli runtime
  • CRI-O: Kubernetes için
  • LXC/LXD: System container (OS seviyesi)
  • systemd-nspawn: systemd container

Container Orchestration

Binlerce container yönetmek için orkestrasyon:

  • Kubernetes: En yaygın, endüstri standardı
  • Docker Swarm: Basit, Docker'a entegre
  • Nomad: HashiCorp
  • OpenShift: Red Hat K8s distribution
  • ECS/EKS: AWS
  • GKE: Google
  • AKS: Azure

Container Image

Bir container'ın "şablonu" image'dir. Katmanlı dosya sistemi (OverlayFS) kullanır:

  • Base image (ör. alpine, ubuntu)
  • Uygulama katmanı
  • Yapılandırma katmanı
  • Runtime katmanı

Container bir image'ın çalışan örneğidir. Image registry (Docker Hub, GHCR, ECR) üzerinden dağıtılır.

Container Avantajları

  • Hızlı başlatma (saniyeler)
  • Düşük overhead
  • Yüksek yoğunluk
  • Taşınabilirlik ("build once, run anywhere")
  • Immutable infrastructure
  • DevOps/CI-CD uyumu
  • Mikroservis mimari desteği
  • Resource limitleme (cgroups)

Container Dezavantajları

  • İzolasyon VM'den zayıf
  • Kernel paylaşımı — tüm container'lar aynı kernel
  • Windows container'lar özel (Windows kernel gerekir)
  • Persistent storage yönetimi karmaşık
  • Network yönetimi öğrenme eğrisi
  • Stateful uygulamalar için zorlu

Container Security

  • Rootless container kullan (non-privileged)
  • Base image minimal (alpine, distroless)
  • Image scanning (Trivy, Snyk, Clair)
  • Secrets management (Vault, AWS Secrets Manager)
  • Network policies
  • Read-only filesystem
  • Seccomp, AppArmor, SELinux profilleri

Kullanım Senaryoları

  • Mikroservis mimarileri
  • CI/CD pipeline
  • Geliştirme/test ortamları
  • Scaling uygulamaları
  • Legacy uygulama modernizasyonu
  • Serverless/FaaS backend'leri

Linux Namespace ve cgroups

Container'ın izolasyonu iki Linux kernel özelliğine dayanır:

  • Namespaces: Kaynak görünürlüğünü izole eder (PID, network, mount, user, UTS, IPC)
  • cgroups: Kaynak kullanımını limitler (CPU, RAM, I/O)

MeoHost ve Container

MeoHost VDS paketlerinde Docker yerleşik kurulabilir. Enterprise K8s ortamları için vCenter + Rancher veya dedicated Kubernetes cluster yapılandırılabilir. Managed container platform ihtiyaçlarında danışmanlık sunulur.

İlgili Terimler