Blog Yazısı

← Tüm Blog Yazılarına Dön
DevOps & Sistem Yönetimi • 7 Kasım 2026 • 7 dk okuma

Docker Nedir ve Ne İşe Yarar? Yeni Başlayanlar İçin Adım Adım Konteyner (Container) Rehberi

Yazılım geliştiricilerin en büyük kabusu olan 'Benim bilgisayarımda çalışıyordu ama sunucuda patladı!' sorununa kesin çözüm: Docker. Konteyner teknolojisinin ne olduğunu, sanal makinelerden farkını, Dockerfile yazımını ve temel komutları pratik bir rehberle inceliyoruz.

Yazılım dünyasında neredeyse her geliştiricinin kariyerinde en az birkaç kez yaşadığı klasik bir diyalog vardır: 'Kodu yerel bilgisayarımda yazdım, test ettim, canavar gibi çalışıyordu. Ama üretim sunucusuna (production) yükleyince hata verdi!' Neden mi? Çünkü yerel bilgisayarınızdaki Python sürümü, kurulu kütüphaneler, işletim sistemi paketleri veya ortam değişkenleri (environment variables) ile sunucudaki ortam birebir aynı değildir. İşte bu uyumsuzluk kaosunu kökünden çözmek için ortaya çıkan teknolojiye Docker diyoruz.

Docker Nedir ve Nasıl Çalışır?
Docker; bir uygulamanın çalışması için gereken tüm bağımlılıkları (kod, çalışma zamanı kütüphaneleri, sistem araçları, ayar dosyaları) tek bir izole paket haline getiren açık kaynaklı bir konteynerleştirme (containerization) platformudur. Günlük hayattan bir benzetme yapalım: Eskiden deniz aşırı taşımacılıkta mallar gemilere çuvallarla veya kasalarla rastgele yüklenirdi. Biri ıslanır, biri kırılır, gemiden gemiye aktarırken kaos çıkardı. Sonra standart nakliye konteynerleri icat edildi. Konteynerin içine ne koyarsanız koyun; dışarıdan boyutu ve kilitleri standarttır, ister kamyona, ister trene, ister devasa kargo gemisine doğrudan yüklenir. Docker da yazılım dünyasının standart nakliye konteyneridir.

Sanal Makineler (VM) vs Docker Konteynerleri: Fark Nerede?
Birçok kişi Docker'ı VirtualBox veya VMware gibi sanal makinelerle karıştırır. Oysa aralarında devasa bir mimari fark vardır:
- Sanal Makineler (VM): Fiziksel donanım üzerinde bir Hypervisor katmanı çalıştırır ve her bir sanal makine için sıfırdan komple bir Konuk İşletim Sistemi (Guest OS) kurar. Bu yüzden bir VM açmak gigabaytlarca RAM tüketir ve dakikalar sürer.
- Docker Konteynerleri: Ana makinenin işletim sistemi çekirdeğini (Linux Kernel) ortaklaşa kullanır. Sıfırdan işletim sistemi yüklemez; sadece uygulamanın ihtiyaç duyduğu paketleri hafif bir yalıtımla çalıştırır. Bu sayede bir Docker konteyneri megabaytlar seviyesinde bellek tüketir ve saliseler içinde ayağa kalkar.

Temel Docker Kavramları:
Docker dünyasına adım attığınızda sıkça duyacağınız 3 temel kavram vardır:
1. Dockerfile: Konteynerinizin nasıl üretileceğini adım adım tarif eden yemek tarifidir.
2. Image (İmaj): Dockerfile'ın derlenmiş, dondurulmuş halidir. Çalıştırılmaya hazır kalıptır.
3. Container (Konteyner): Bir imajın bellekte can bulmuş, aktif çalışan canlı örneğidir. Aynı imajdan istediğiniz kadar konteyner başlatabilirsiniz.

Adım Adım Basit Bir Dockerfile Yazalım:
Örneğin FastAPI veya Flask ile yazdığımız bir Python uygulamasını konteyner haline getirelim. Proje ana dizininde uzantısız bir 'Dockerfile' oluşturalım:

FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "main.py"]

Bu birkaç satır ne diyor? 'Bana resmi Python 3.11 imajını getir, /app klasörüne gir, gereksinimleri kur, kodlarımı kopyala ve main.py dosyasını çalıştır!' İşte bu kadar net.

En Sık Kullanılan Temel Docker Komutları:
Terminalde bilmeniz gereken 5 sihirli komut:
- docker build -t projem:v1 . -> Dockerfile'ı okuyup 'projem' adında bir imaj üretir.
- docker run -d -p 8080:8000 projem:v1 -> İmajı arka planda çalıştırır ve sunucunun 8080 portunu konteynerin 8000 portuna bağlar.
- docker ps -> Şu anda çalışan konteynerleri listeler.
- docker logs -f <konteyner_id> -> Konteynerin terminal çıktılarını canlı olarak ekrana basar.
- docker stop <konteyner_id> -> Çalışan konteyneri güvenle durdurur.

Sonuç: Neden Her Yazılımcı Docker Bilmeli?
Bugün ister tek başınıza küçük projeler geliştirin, ister yüzlerce kişilik ekiplerle bulut (cloud) sistemleri yönetin; Docker bilmek 'Benim makinemde çalışıyordu' mazeretini tarihe gömer. Kodunuz yerel laptopunuzda nasıl çalışıyorsa, Amazon AWS, Google Cloud veya kendi kiraladığınız Ubuntu VPS sunucunuzda da tıpatıp aynı şekilde çalışır.

← Diğer Yazılar Fikirlerini Paylaş →