Docker ile Konteyner Dünyasına Giriş: Sıfırdan Uygulamalarınızı Taşıyın

Docker ile Konteyner Dünyasına Giriş: Sıfırdan Uygulamalarınızı Taşıyın

Docker Nedir ve Neden Kullanmalıyız?

"Benim bilgisayarımda çalışıyor ama sunucuda çalışmıyor!" cümlesi, yazılım dünyasında çok sık duyulan bir şikâyettir. Docker, tam da bu sorunu ortadan kaldırmak için doğmuştur. Docker; uygulamalarınızı, tüm bağımlılıklarıyla birlikte bağımsız, taşınabilir paketler (konteyner) içinde çalıştırmanıza olanak tanır.

Sanal Makine vs Konteyner

Geleneksel sanal makinelerde her VM için tam bir işletim sistemi kurulumu gerekirken, Docker konteynerleri ana makinenin çekirdeğini paylaşır. Bu sayede çok daha hafif, hızlı ve verimlidirler.

ÖzellikSanal MakineDocker Konteyner
Başlangıç SüresiDakikalarSaniyeler
Disk BoyutuGB'larcaMB'larca
İzolasyonTam OS izolasyonuProses izolasyonu
TaşınabilirlikOrtaMükemmel

Temel Docker Kavramları

  • Image (Görüntü): Uygulamanızın "blueprint"i. Salt okunur bir şablon.
  • Container (Konteyner): Image'ın çalışan bir örneği.
  • Dockerfile: Image'ı nasıl oluşturacağınızı tanımlayan talimat dosyası.
  • Docker Hub: Hazır image'ları bulabileceğiniz bulut deposu.
  • Docker Compose: Birden fazla konteyneri koordineli şekilde yönetme aracı.

İlk Dockerfile'ınızı Yazın

Basit bir Node.js uygulamasını Docker ile paketleyelim:

# Temel image olarak resmi Node.js 20 Alpine kullan (en hafif versiyon)
FROM node:20-alpine

# Çalışma dizinini ayarla
WORKDIR /app

# Bağımlılık dosyalarını kopyala
COPY package*.json ./

# Bağımlılıkları yükle (sadece üretim bağımlılıkları)
RUN npm ci --only=production

# Uygulama kaynak kodunu kopyala
COPY . .

# Uygulamanın hangi portu dinlediğini belirt (dokümantasyon amaçlı)
EXPOSE 3000

# Konteyneri başlatma komutu
CMD ["node", "index.js"]

Docker Compose ile Çoklu Servis

Gerçek projelerde genellikle birden fazla servise ihtiyaç duyarsınız (uygulama sunucusu + veritabanı + cache). Docker Compose tam da bunun için var:

# docker-compose.yml
version: '3.9'

services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgresql://user:password@db:5432/mydb
    depends_on:
      - db
      - redis

  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydb
    volumes:
      - postgres_data:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

volumes:
  postgres_data:

Bu yapıyı docker compose up -d komutuyla ayağa kaldırdığınızda uygulamanız, PostgreSQL veritabanınız ve Redis cache'iniz tek seferde çalışmaya başlar.

💡 İpucu

Docker Desktop'u yükledikten sonra docker run hello-world komutuyla kurulumunuzu test edebilirsiniz. Her şey yolundaysa "Hello from Docker!" mesajı görürsünüz.

0 Yorum

YORUM YAPMAK İÇİN SİSTEME SIZMANIZ GEREKİYOR

Lütfen yukarıdaki butonu kullanarak giriş yapın veya kimlik oluşturun.

Yorumlar yükleniyor...