Teknoloji

Docker Nedir? Konteyner Teknolojisine Giriş

Docker, uygulamaları konteyner adı verilen izole ortamlarda çalıştırmayı sağlayan platformdur. Konteyner teknolojisinin temellerini ve kullanımını öğrenin.

Semih AKBAŞ
2 dk okuma 35 0
Docker Nedir? Konteyner Teknolojisine Giriş

Docker Nedir?

Docker, uygulamaları konteyner adı verilen hafif, taşınabilir ve izole ortamlarda paketleyip çalıştırmayı sağlayan açık kaynak bir platformdur. 2013 yılında piyasaya sürülen Docker, yazılım geliştirme ve dağıtım süreçlerini kökten değiştirmiştir.

Konteynerler, sanal makinelerden farklı olarak işletim sistemi çekirdeğini paylaşır, bu yüzden çok daha hafif ve hızlıdır.

Docker vs Sanal Makine

ÖzellikDocker KonteynerSanal Makine
Başlatma süresiSaniyelerDakikalar
BoyutMB düzeyindeGB düzeyinde
İşletim sistemiHost çekirdeğini paylaşırKendi OS'ini çalıştırır
PerformansNeredeyse yerele yakınHypervisor overhead'i var
İzolasyonSüreç düzeyindeTam donanım düzeyinde
Kaynak kullanımıÇok düşükYüksek

Temel Docker Kavramları

  • Image: Uygulamanın çalıştırılabilir şablonu (read-only)
  • Container: Image'dan oluşturulan çalışan örnek
  • Dockerfile: Image oluşturmak için talimat dosyası
  • Docker Hub: Image'ların paylaşıldığı registry
  • Volume: Kalıcı veri depolama
  • Network: Konteynerler arası iletişim

Dockerfile Örneği

# Node.js uygulaması için Dockerfile
FROM node:20-alpine

WORKDIR /app

# Bağımlılıkları önce kopyala (cache optimizasyonu)
COPY package*.json ./
RUN npm ci --only=production

# Uygulama kodunu kopyala
COPY . .

# Port tanımla
EXPOSE 3000

# Uygulamayı başlat
CMD ["node", "server.js"]

Docker Compose

Birden fazla konteyneri tek komutla yönetmenizi sağlar:

# docker-compose.yml
version: "3.8"
services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
    environment:
      - DB_HOST=db
      
  db:
    image: mysql:8
    volumes:
      - mysql_data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=secret
      - MYSQL_DATABASE=myapp

volumes:
  mysql_data:

Temel Docker Komutları

# Image oluştur
docker build -t myapp:1.0 .

# Konteyner çalıştır
docker run -d -p 3000:3000 --name web myapp:1.0

# Çalışan konteynerleri listele
docker ps

# Konteyner loglarını gör
docker logs -f web

# Konteynere bağlan
docker exec -it web sh

# Her şeyi durdur ve temizle
docker compose down -v

Docker Neden Önemli?

  1. "Bende çalışıyordu" sorunu kalkar: Her yerde aynı ortam
  2. Hızlı deployment: Saniyeler içinde prod'a çıkma
  3. Mikroservis mimarisi: Her servis kendi konteynerinde
  4. CI/CD entegrasyonu: Otomatik test ve deploy pipeline'ları
  5. Kaynak verimliliği: Bir sunucuda düzinelerce konteyner

💡 Sonraki adım: Docker'ı öğrendikten sonra Kubernetes ile konteyner orkestrasyon dünyasına adım atabilirsiniz.

Semih AKBAŞ

Semih AKBAŞ

Yazılım geliştirici. Web, mobil ve masaüstü uygulamalar geliştiriyorum.

Yorumlar (0)

Henüz yorum yok. İlk yorumu siz yapın!