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.