Docker Nedir? AI Geliştirmede Konteyner Teknolojisi (Konteyner Teknolojisi)

Uygulamaları ve tüm bağımlılıklarını izole edilmiş kaplara (container) paketleyerek her ortamda tutarlı çalışmasını sağlayan açık kaynaklı konteynerizasyon platformu.

Docker, 2013 yılında Solomon Hykes tarafından geliştirilen ve Linux çekirdeğinin konteyner teknolojisini kullanıcı dostu bir API ile erişilebilir kılan açık kaynaklı bir konteynerizasyon platformudur. Temel amacı "bende çalışıyor ama sende çalışmıyor" sorununu ortadan kaldırmaktır: Uygulama kodu, çalışma zamanı, kütüphaneler ve tüm sistem bağımlılıkları bir araya getirilerek "image" adı verilen taşınabilir bir paket oluşturulur; bu paketten çalıştırılan "container", bulut sunucusundan yerel makineye kadar her ortamda aynı davranışı sergiler. Sanal makinelerden (VM) farkı kritik öneme sahiptir. VM'ler tam bir işletim sistemi çalıştırırken Docker container'ları ana sistemin çekirdeğini paylaşır. Bu sayede container'lar saniyeler içinde başlar, megabayt mertebesinde yer kaplar ve çok daha az RAM tüketir. Container'lar sanallaştırma yerine işletim sistemi düzeyinde izolasyon sunar. AI ve makine öğrenimi ekosisteminde Docker birkaç kritik sorunu çözer. Araştırmacılar, farklı Python sürümleri, CUDA versiyonları veya kütüphane kombinasyonları gerektiren deneyleri Dockerfile aracılığıyla yeniden üretilebilir ortamlar olarak tanımlayabilir. Model deployment sürecinde eğitilmiş modeller API sunucularıyla birlikte konteynerize edilerek Kubernetes gibi orkestrasyon araçlarıyla büyük ölçekte dağıtılabilir. MLflow, Kubeflow ve Airflow gibi MLOps araçlarının büyük çoğunluğu Docker'ı temel alır. Temel bileşenler şunlardır: Dockerfile (image'ı tanımlayan yapılandırma dosyası), image (çalıştırılabilir paket), container (çalışan image örneği), registry (Docker Hub gibi image deposu) ve docker-compose (çoklu container uygulamalarını yönetme aracı). docker pull, docker run ve docker build komutları günlük kullanımın temelini oluşturur.

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.