Docker ile Uygulama Paketleme
Uygulamalarınızı Docker container'larına paketleyerek her ortamda tutarlı çalışmasını sağlayın.
Docker ile Uygulama Paketleme
Docker, uygulamalarınızı ve bağımlılıklarınızı hafif, taşınabilir container'lara paketlemenizi sağlar. Bu sayede "bende çalışıyordu" sorununu ortadan kaldırır ve uygulamanızı her ortamda tutarlı şekilde çalıştırırsınız.
🎯 Docker Nedir? Günlük Hayattan Örnekler
📦 Container = Paketlenmiş Kutu
Düşünün ki bir arkadaşınıza yemek tarifi gönderiyorsunuz. Sadece tarifi değil, tüm malzemeleri de paketleyip gönderiyorsunuz:
- ✅ Tarif (kodunuz)
 - ✅ Malzemeler (kütüphaneler, araçlar)
 - ✅ Pişirme süresi (çalışma ortamı)
 - ✅ Sıcaklık (sistem ayarları)
 
Arkadaşınız paketi açtığında, aynen sizin yaptığınız gibi yemek yapabilir!
🏠 Image = Tarif Kitabı
Docker Image'ı, yemek tarifinizin yazılı olduğu kitap gibidir:
- Herkes aynı kitabı kullanabilir
 - Kitap her yerde aynı sonucu verir
 - Yeni tarifler ekleyebilirsiniz
 
🚚 Container = Pişirilen Yemek
Container ise tarifi kullanarak pişirdiğiniz yemektir:
- Tarif kitabından (Image) yapılır
 - Her seferinde aynı lezzette olur
 - İstediğiniz zaman yapabilirsiniz
 
🤔 Neden Docker Kullanmalıyız?
"Bende Çalışıyordu" Sorunu
Senaryo: Arkadaşınızla aynı projeyi geliştiriyorsunuz.
Sorun:
- Sizde Node.js 18 var, arkadaşınızda 16
 - Sizde Windows var, arkadaşınızda Mac
 - Sizde farklı kütüphaneler yüklü
 
Sonuç: "Bende çalışıyordu ama arkadaşımda çalışmıyor!"
Docker Çözümü:
- Her ikinizde de aynı container çalışır
 - Aynı Node.js versiyonu
 - Aynı kütüphaneler
 - Aynı sistem ayarları
 
🏢 Gerçek Hayat Örnekleri
1. Web Sitesi Deployment
Önceki Durum:
- Sunucuda Node.js kurulumu
 - Kütüphane versiyonları uyumsuzluğu
 - "Production'da çalışmıyor" sorunları
 
Docker ile:
- Container'ı her yere taşıyabilirsiniz
 - Aynı ortam her yerde
 - Hızlı ve güvenli deployment
 
2. Ekip Çalışması
Önceki Durum:
- Herkes farklı sistem kurulumu yapıyor
 - "Benim bilgisayarımda çalışıyor" durumları
 - Zaman kaybı
 
Docker ile:
- Tek komutla herkes aynı ortamı kuruyor
 - Tutarlı geliştirme ortamı
 - Hızlı onboarding
 
3. Mikroservis Mimarisi
Örnek: E-ticaret sitesi
- Kullanıcı servisi (Node.js)
 - Ürün servisi (Python)
 - Ödeme servisi (Java)
 - Veritabanı (PostgreSQL)
 
Her servis ayrı container'da çalışır ve birbirleriyle konuşur.
🛠️ Temel Docker Kavramları
Dockerfile = Tarif
# Hangi malzemeleri kullanacağız?
FROM node:18
# Nerede çalışacağız?
WORKDIR /app
# Hangi malzemeleri ekleyeceğiz?
COPY package.json ./
RUN npm install
# Tarifi ekleyelim
COPY . .
# Hangi portta servis edeceğiz?
EXPOSE 3000
# Nasıl başlatacağız?
CMD ["npm", "start"]
Image = Hazır Tarif Kitabı
# Tarif kitabını oluştur
docker build -t my-app .
# Tarif kitabını listele
docker images
Container = Pişirilen Yemek
# Yemeği pişir (container başlat)
docker run -p 3000:3000 my-app
# Pişen yemekleri listele
docker ps
# Yemeği durdur
docker stop container-id
🚀 Pratik Örnek: Basit Web Uygulaması
1. Basit Node.js Uygulaması
// app.js
const express = require('express');
const app = express();
app.get('/', (req, res) => {
  res.send('Merhaba Docker!');
});
app.listen(3000, () => {
  console.log('Uygulama çalışıyor!');
});
2. Dockerfile
FROM node:18
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
3. Çalıştırma
# Image oluştur
docker build -t merhaba-docker .
# Container başlat
docker run -p 3000:3000 merhaba-docker
Artık http://localhost:3000 adresinde uygulamanız çalışıyor!
🎯 Docker'ın Avantajları
1. Tutarlılık
- Geliştirme, test ve production aynı ortam
 - "Bende çalışıyordu" sorunu yok
 
2. Taşınabilirlik
- Herhangi bir sunucuda çalışır
 - Cloud'a kolayca taşınabilir
 
3. Ölçeklenebilirlik
- İhtiyaç duyduğunuzda container'ları çoğaltabilirsiniz
 - Yük dağıtımı kolay
 
4. İzolasyon
- Her uygulama kendi ortamında çalışır
 - Birbirlerini etkilemez
 
5. Hızlı Deployment
- Saniyeler içinde yeni sürüm yayınlayabilirsiniz
 - Rollback kolay
 
🎯 Sonuç
Docker, uygulamalarınızı paketleyip taşınabilir hale getiren bir araçtır. Tıpkı yemek tarifini malzemeleriyle birlikte paketleyip göndermek gibi!
Temel Faydalar:
- ✅ Tutarlılık: Her yerde aynı çalışır
 - ✅ Taşınabilirlik: Kolayca taşınabilir
 - ✅ Hız: Hızlı kurulum ve deployment
 - ✅ Güvenlik: İzole ortamlar
 - ✅ Ölçeklenebilirlik: İhtiyaç duyduğunuzda büyüyebilir
 
Docker öğrenmeye başlamak için basit bir web uygulaması ile başlayın. Zamanla daha karmaşık projelerde kullanmaya başlayacaksınız!
📱 Bu Yazıyı Paylaş
Bu yazıyı beğendiyseniz, arkadaşlarınızla paylaşabilirsiniz:
