Ana içeriğe atla

Konteynerleştirme: Makine Öğrenimi için Docker ve Kubernetes

Makine Öğreniminde Başarı için Docker ve Kubernetes’in Gücünü Ortaya Çıkarmak
Güncel 3 Eki 2026  · 10 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Yeniliğin ilerlemenin temel taşı olduğu engin teknoloji dünyasında, konteynerleştirme oyunun kurallarını değiştiren bir yaklaşım olarak öne çıktı. Uygulamaları ve bağımlılıklarını taşınabilir ve hafif birimler hâlinde kapsülleme yeteneği sayesinde, konteynerleştirme yazılım geliştirme ve makine öğrenimini dönüştürdü.

Bu konteynerleştirme devriminin iki devi olan Docker ve Kubernetes, uygulamaları nasıl inşa edip ölçeklendirdiğimizi yeniden şekillendirerek öne çıktı. Karmaşıklık ve ölçeklenebilirliğin ön planda olduğu makine öğrenimi dünyasında konteynerleştirme paha biçilmez bir çözüm sunar.

Bu makalede, konteynerleştirmenin dünyasına bir yolculuğa çıkacak, Docker ve Kubernetes’in harikalarını keşfedecek ve makine öğrenimi bağlamında derin önemlerini ve avantajlarını inceleyeceğiz.

Konteyner Nedir?

Bir konteyner, kodu ve bağımlılıklarını kapsayan, farklı bilişim ortamlarında verimli ve güvenilir çalıştırmayı kolaylaştıran standartlaştırılmış bir yazılım birimidir. Uygulamayı çalıştırmak için gereken kod, çalışma zamanı, sistem araçları, kütüphaneler ve yapılandırmalar gibi tüm bileşenleri içeren, konteyner imajı adı verilen hafif ve bağımsız bir paketten oluşur.

Konteynerlerde yerleşik yalıtım bulunur; bu sayede her konteyner bağımsız çalışır ve kendi yazılım, kütüphane ve yapılandırma dosyalarını içerir. Tek bir işletim sistemi çekirdeği tarafından çalıştırılırken, iyi tanımlanmış kanallar üzerinden birbirleriyle iletişim kurabilirler. Bu yaklaşım, bir denetim ana bilgisayarında konteyner olarak adlandırılan birden çok yalıtılmış kullanıcı alanı örneğinin çalışmasına olanak tanıdığı için sanal makinelere kıyasla kaynak kullanımını optimize eder.

image3.png

Görsel Kaynağı

Modern Uygulamalar İçin Konteynerler Neden Önemlidir?

Konteynerleştirme, sunduğu çok sayıda avantaj nedeniyle makine öğrenimi alanında son derece önemlidir. Başlıca faydalar şunlardır:

1. Yeniden üretilebilirlik ve taşınabilirlik

Konteynerler, tüm yazılım yığınını kapsülleyerek ML modellerinin farklı ortamlarda tutarlı şekilde dağıtılmasını ve kolay taşınabilirliğini sağlar.

2. Yalıtım ve bağımlılık yönetimi

Bağımlılıklar konteynerlerin içinde yalıtılır; bu da çakışmaları önler ve bağımlılık yönetimini basitleştirir, farklı kütüphane sürümleriyle çalışmayı kolaylaştırır.

3. Ölçeklenebilirlik ve kaynak yönetimi

Kubernetes gibi konteyner orkestrasyon platformları, ML iş yüklerinin verimli kaynak kullanımı ve ölçeklenmesini mümkün kılar; performansı artırır ve maliyetleri düşürür.

Neden Docker Kullanmalı?

DataCamp’in Docker kopya kâğıdına göz atın.

Konteynerleştirmenin öncüsü olarak anılan Docker, yazılım geliştirme ve dağıtım manzarasını dönüştürdü. Temelde Docker, uygulamaları ve bağımlılıklarını kapsülleyen hafif, yalıtılmış konteynerler oluşturup yönetmek için bir platform sağlar.

Docker bunu, koddan sistem kütüphanelerine ve bağımlılıklara kadar bir uygulamayı çalıştırmak için gereken her şeyi içeren, kendi kendine yeten paketler olan konteyner imajlarını kullanarak başarır. Docker imajları kolayca oluşturulabilir, paylaşılabilir ve dağıtılabilir; böylece geliştiriciler karmaşık yapılandırma ve dağıtım süreçleriyle uğraşmak yerine uygulama inşa etmeye odaklanabilir.

Projenizde bir Dockerfile oluşturma

Bir uygulamayı konteynerleştirmek, uygulamayı ve bağımlılıklarını bir Docker konteynerine kapsülleme sürecini ifade eder. İlk adım, proje dizini içinde bir Dockerfile oluşturmaktır. Dockerfile, bir Docker imajı oluşturmaya yönelik bir dizi talimat içeren bir metin dosyasıdır. Uygulama kodu, bağımlılıklar ve yapılandırma ayarlarını içeren bir konteyner oluşturmak için bir plan görevi görür. Örnek bir Dockerfile’a bakalım:

# Use the official Python base image with version 3.9
FROM python:3.9


# Set the working directory within the container
WORKDIR /app


# Copy the requirements file to the container
COPY requirements.txt .


# Install the dependencies
RUN pip install -r requirements.txt


# Copy the application code to the container
COPY . .


# Set the command to run the application
CMD ["python", "app.py"]

Yaygın Docker komutları ve sektör genelindeki en iyi uygulamalar hakkında daha fazla bilgi edinmek isterseniz blog yazımız Veri Bilimi için Docker: Bir Giriş ve Docker’a Giriş kursumuza göz atın.

Bu Dockerfile basit bir yapıyı izler. Önce temel imaj olarak resmi Python 3.9 sürümü belirtilir. Konteyner içindeki çalışma dizini "/app" olarak ayarlanır. "requirements.txt" dosyası, gerekli bağımlılıkları "RUN" talimatıyla yüklemek üzere konteynere kopyalanır. Ardından uygulama kodu konteynere kopyalanır. Son olarak, "CMD" talimatı, bu imaja dayalı bir konteyner çalıştırıldığında yürütülecek komutu tanımlar; genellikle uygulama python app.py komutuyla başlatılır.

Dockerfile’dan Docker İmajı Oluşturma

Bir Dockerfile’a sahip olduğunuzda, aşağıdaki komutu terminalde çalıştırarak bu dosyadan imajı oluşturabilirsiniz. Bunun için bilgisayarınızda Docker kurulu olmalıdır. Docker’ı kurmadıysanız bu talimatları izleyin.

docker build -t image-name:tag

Bu komutu çalıştırmak uzun sürebilir. İmaj oluşturulurken günlükleri terminalde göreceksiniz. docker build komutu bir imaj inşa ederken, -t bayrağı imaja bir ad ve etiket atar. Ad, imaj için istenen tanımlayıcıyı; etiket ise bir sürüm veya etiketi ifade eder. . işareti, Dockerfile’ın bulunduğu mevcut dizini belirtir ve Docker’a, imaj oluşturma için plân olarak mevcut dizindeki Dockerfile’ı kullanması gerektiğini söyler.

İmaj oluşturulduktan sonra, doğrulamak için terminalde docker images komutunu çalıştırabilirsiniz:

image7.png

Yazarın örneği

DataCamp’in Docker’a Giriş kursuyla Docker’a hâkim olma yolculuğunuzda bir adım daha atın. Bu kapsamlı kursta, konteynerleştirmenin temellerini öğrenecek, Docker’ın gücünü keşfedecek ve gerçek dünya örnekleriyle pratik deneyim kazanacaksınız.

Neden Kubernetes Kullanmalı?

Docker konteynerleştirmeyi dönüştürürken, Kubernetes konteynerize uygulamaların sorunsuz yönetimi ve ölçeklendirilmesini sağlayan orkestratör olarak ortaya çıktı. Kısaca K8s olarak da anılan Kubernetes, kapsayıcıların bir düğüm kümesi genelinde dağıtımını, ölçeklenmesini ve yönetimini otomatikleştirir.

Temelde Kubernetes, konteyner orkestrasyonu için sağlam bir özellik seti sunar. Geliştiricilerin, YAML manifestoları kullanarak uygulamalarının istenen durumunu tanımlamasına ve beyan etmesine olanak tanır. Kubernetes daha sonra istenen durumun korunmasını sağlar; konteynerlerin zamanlanması, talebe bağlı olarak uygulamaların ölçeklenmesi ve konteyner sağlığı ile erişilebilirliğinin yönetilmesi gibi görevleri otomatik olarak üstlenir.

Kubernetes ile geliştiriciler, altyapının ayrıntılarıyla uğraşmadan artan trafik ve iş yükünü karşılamak için uygulamalarını sorunsuzca ölçeklendirebilir. Altyapı yönetimine deklaratif bir yaklaşım sunarak, geliştiricilerin konteyner dağıtımlarının inceliklerini yönetmek yerine uygulamalarını geliştirmeye odaklanmalarını sağlar.

Makine öğrenimi için Kubernetes bileşenlerini anlama: Pod’lar, Servisler, Dağıtımlar

Kubernetes, makine öğrenimi uygulamalarını verimli şekilde dağıtmak ve yönetmek için hayati öneme sahip birkaç temel bileşen sunar. Bu bileşenler arasında Pod’lar, Servisler ve Dağıtımlar bulunur.

1. Pod’lar

Kubernetes’te bir Pod, en küçük dağıtım birimidir. Küme içinde çalışan bir sürecin tek bir örneğini temsil eder. Makine öğrenimi bağlamında, bir Pod genellikle bir konteynerize ML modelini veya ML iş akışının belirli bir bileşenini kapsüller. Pod’lar, birlikte çalışan ve aynı ağ ile depolama kaynaklarını paylaşan bir veya daha fazla konteynerden oluşabilir.

image2.png

Görsel Kaynağı

2. Servisler

Servisler, farklı Pod’lar arasında iletişim ve ağ bağlantısını sağlar. Bir Servis, bir veya daha fazla Pod’a erişim için kararlı bir ağ uç noktası tanımlar. Makine öğrenimi senaryolarında Servisler, ML modellerini veya bileşenlerini veri girişi ya da model çıkarımı için uç nokta olarak açığa çıkarmada kullanılabilir. Yük dengeleme ve keşif mekanizmaları sağlar; böylece diğer uygulamaların veya servislerin ML bileşenleriyle etkileşimi kolaylaşır.

image4.png

Görsel Kaynağı

3. Dağıtımlar

Dağıtımlar (Deployments), Pod’ların oluşturulması ve ölçeklenmesini yönetmek için deklaratif bir yol sunar. Bir Dağıtım, bir Pod’un belirtilen sayıda kopyasının her zaman çalışır durumda olmasını sağlar. Kolay ölçekleme, aşamalı güncellemeler ve geri almalar sunar. Dağıtımlar, talebe bağlı dinamik ölçekleme gerektiren veya kesinti olmadan güncelleme uygulanması gereken ML iş yüklerini yönetmek için özellikle kullanışlıdır.

image1.png

Görsel Kaynağı

Bir ML projesi için Kubernetes Yapılandırma Dosyası Yazma

Bir ML projesini Kubernetes’te dağıtmak için genellikle YAML formatında yazılmış bir Kubernetes yapılandırma dosyası kullanılır. Bu dosya, Pod’lar, Servisler, Dağıtımlar ve diğer Kubernetes kaynaklarına ilişkin bilgiler de dâhil olmak üzere uygulamanın istenen durumunu belirtir.

Yapılandırma dosyası, ML uygulamasını çalıştırmak için gereken konteynerleri, ortam değişkenlerini, kaynak gereksinimlerini ve ağ unsurlarını tanımlar. İstenen kopya sayısını, port eşlemelerini, birim bağlamalarını ve ML projesine özgü belirli yapılandırmaları belirtir.

Kubernetes kurulumu için örnek yapılandırma yaml dosyası

apiVersion: v1
kind: Pod
metadata:
  name: ml-model-pod
spec:
  containers:
    - name: ml-model-container
      image: your-image-name:tag
      ports:
        - containerPort: 8080
      env:
        - name: ENV_VAR_1
          value: value1
        - name: ENV_VAR_2
          value: value2

Bu örnekte, Kubernetes’te bir Pod’u yapılandırmak için çeşitli öğeler kullanılır. Buna Kubernetes API sürümünün belirtilmesi, kaynak türünün Pod olarak tanımlanması, Pod’un adı gibi üstverilerin sağlanması ve spec bölümünde Pod’un özelliklerinin ana hatlarıyla belirtilmesi dâhildir.

Makine öğrenimi için Kubernetes

Kubernetes yapılandırma dosyası tanımlandıktan sonra bir ML modelini dağıtmak oldukça basittir. kubectl komut satırı aracı kullanılarak, yapılandırma dosyası Kubernetes kümesine uygulanır ve belirtilen Pod’lar, Servisler ve Dağıtımlar oluşturulur.

Kubernetes, istenen durumun elde edilmesini sağlar ve gerekli kaynakları otomatik olarak oluşturup yönetir. Buna Pod’ların uygun düğümlere zamanlanması, ağın yönetilmesi ve Servisler için yük dengelemenin sağlanması dâhildir.

Kubernetes, ML iş yüklerini ölçeklendirme ve yönetmede mükemmeldir. Yatay ölçekleme ile artan talebi karşılamak veya ML hesaplamalarını paralelleştirmek için Pod’ların daha fazla kopyası kolayca oluşturulabilir. Kubernetes, yük dağılımını Pod’lar arasında otomatik olarak yönetir ve verimli kaynak kullanımını sağlar.

image6.png

Görsel Kaynağı

Sonuç

Docker ve Kubernetes tarafından güçlendirilen konteynerleştirme, birçok avantaj ve yetenek sunarak makine öğrenimi alanını dönüştürdü. Docker, uygulamaları ve bağımlılıklarını kapsülleyen hafif, yalıtılmış konteynerler oluşturup yönetmek için bir platform sağlar. Dağıtım sürecini basitleştirir; geliştiricilerin karmaşık yapılandırmalarla uğraşmak yerine uygulama geliştirmeye odaklanmasına olanak tanır.

Kubernetes ise konteynerize uygulamaların dağıtımı, ölçeklenmesi ve yönetimini otomatikleştiren orkestratör olarak görev yapar. Uygulamanın istenen durumunun korunmasını sağlar; konteynerlerin zamanlanması, talebe bağlı ölçekleme ve konteyner sağlığı ile erişilebilirliğinin yönetimi gibi görevleri üstlenir. Kubernetes verimli kaynak kullanımını mümkün kılar ve altyapı yönetimine deklaratif bir yaklaşım sunarak makine öğrenimi iş yüklerinin sorunsuzca ölçeklenmesine imkân tanır.

Docker ve Kubernetes’in birleşimi, makine öğrenimi uygulamalarını yönetmek için güçlü bir çözüm sunar. Docker yeniden üretilebilirlik, taşınabilirlik ve kolay bağımlılık yönetimi sağlarken; Kubernetes, verimli ölçekleme, kaynak yönetimi ve konteyner orkestrasyonu sunar. Birlikte, kuruluşların makine öğreniminin tüm potansiyelini ölçeklenebilir ve güvenilir bir şekilde açığa çıkarmasına olanak tanır.

MLOps dünyasına dalmaya ve makine öğrenimi iş akışlarınızı dönüştürmeye hazır mısınız? MLOps’a Başlangıç rehberimize ve Makine Öğrenimi, Boru Hatları, Dağıtım ve MLOps Eğitimine göz atarak MLOps becerilerinizi bir üst seviyeye taşıyın. Ayrıca Docker becerilerinizi sergilemek için Docker sertifikası alabilirsiniz. 


Moez Ali's photo
Author
Moez Ali
LinkedIn
Twitter

Veri Bilimci, PyCaret'in Kurucusu ve Yaratıcısı

Konular
Makine Öğrenimi
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör