Docker vs Sanal Makine
Sanal makineler (VM), her biri tam bir işletim sistemi çekirdeği ve kullanıcı alanı içeren yalıtılmış ortamlar oluşturur; başlatılması dakikalar alabilir ve gigabayt disk alanı gerektirir. Docker container'ları ise ana sistemin Linux çekirdeğini paylaşır, yalnızca uygulama katmanını izole eder. Sonuç olarak container'lar milisaniyeler içinde başlar ve çok daha az kaynak tüketir. Güvenlik açısından ise VM'ler daha güçlü donanım düzeyi izolasyon sağlar; container'lar aynı çekirdek üzerinde çalıştığından kernel güvenlik açıklarına karşı daha hassastır. AI iş yükleri için sıklıkla her iki teknoloji birlikte kullanılır: Docker container'ları VM örneklerinin içinde çalıştırılır.
AI/ML Ekosistemindeki Kullanım Alanları
- check_circle Tekrarlanabilir Deneyler: Aynı CUDA sürümü, Python ortamı ve kütüphane versiyonları Dockerfile'a yazılarak araştırma deneyleri ekip üyeleri arasında birebir tekrarlanabilir hale gelir.
- check_circle Model Serving: FastAPI veya TorchServe ile sarmalanmış modeller Docker image'ı olarak paketlenir; bulut platformlarında (AWS ECS, Google Cloud Run) kolayca dağıtılır.
- check_circle MLOps Pipeline'ları: Kubeflow, MLflow ve Apache Airflow gibi araçlar her pipeline adımını ayrı bir container olarak çalıştırır; bu sayede bağımlılık çakışmaları yaşanmaz.
- check_circle GPU Destekli İş Yükleri: NVIDIA Container Toolkit (nvidia-docker) sayesinde GPU'lar container'lara geçirilir; farklı CUDA sürümleri gerektiren modeller aynı makinede yan yana çalıştırılabilir.
Temel Docker Kavramları ve Komutları
Dockerfile, FROM (temel image), RUN (komut çalıştır), COPY (dosya kopyala) ve CMD (varsayılan komut) direktifleriyle image'ı katman katman tanımlar. Her katman önbelleklenir; değişmeyen katmanlar tekrar indirilmez. Sık kullanılan komutlar: docker build -t my-model . (image oluştur), docker run --gpus all -p 8000:8000 my-model (GPU'yla çalıştır), docker-compose up (docker-compose.yml ile çoklu servis başlat). Docker Hub veya şirket içi registry'de image sürümleri tag'ler aracılığıyla yönetilir (latest, v1.2.3 gibi).
Sıkça Sorulan Sorular
- check_circle Docker olmadan da AI modeli deploy edilebilir mi?: Evet; sanal ortam (venv, conda) ve doğrudan sunucu kurulumu gibi alternatifler mevcuttur. Ancak Docker, taşınabilirlik ve tekrarlanabilirlik açısından endüstri standardı haline gelmiştir; özellikle ekip ortamlarında ve bulut dağıtımlarında tercih edilir.
- check_circle Docker Compose ne işe yarar?: docker-compose.yml dosyasıyla birbirine bağlı birden fazla container (örneğin model sunucusu + veritabanı + message queue) tek bir komutla (docker-compose up) yönetilebilir. Servisler arası ağ kurulumu otomatik yapılır.
- check_circle Kubernetes ile Docker arasındaki fark nedir?: Docker tekil container'lar oluşturur ve çalıştırır. Kubernetes ise yüzlerce container'ı kümeler halinde orkestre eder: yük dengeleme, otomatik ölçeklendirme, sağlık denetimi ve rolling update gibi özellikleri yönetir. Büyük ölçekli AI servisleri için Docker + Kubernetes kombinasyonu standart hale gelmiştir.
- check_circle GPU'yu Docker container'ına nasıl geçiririm?: NVIDIA Container Toolkit kurulduktan sonra docker run --gpus all komutuyla tüm GPU'lar container'a açılır. docker run --gpus '"device=0"' ile belirli bir GPU da seçilebilir. PyTorch ve TensorFlow, container içinde CUDA'yı doğrudan kullanır.