← Back to Blog
DEVOPS

Docker Nedir?

F. Çağrı BilgehanJanuary 23, 202611 min read
dockercontainerdevopsdeployment

Docker Nedir? Container Teknolojisi Başlangıç Rehberi

"Bende çalışıyordu" cümlesini tarihe gömün. Docker, uygulamanızı tüm bağımlılıklarıyla birlikte paketleyerek her ortamda aynı şekilde çalışmasını garanti eder.

Docker Nedir?

Docker, uygulamaları container adı verilen hafif, izole ortamlarda çalıştırmak için bir platformdur. Container, uygulamanın çalışması için gereken her şeyi (kod, çalışma zamanı, kütüphaneler, sistem araçları) tek bir pakette sunar.

Container vs Sanal Makine (VM)

   VM Yaklaşımı                    Docker Yaklaşımı
┌─────────────────┐           ┌─────────────────┐
│    Uygulama A   │           │  App A │  App B  │
│    Kütüphaneler │           │  Libs  │  Libs   │
│    Guest OS     │           └────────┴────────┘
├─────────────────┤           ┌─────────────────┐
│    Uygulama B   │           │   Docker Engine  │
│    Kütüphaneler │           ├─────────────────┤
│    Guest OS     │           │    Host OS       │
├─────────────────┤           ├─────────────────┤
│   Hypervisor    │           │    Hardware      │
├─────────────────┤           └─────────────────┘
│    Host OS      │
├─────────────────┤
│    Hardware     │
└─────────────────┘

| Özellik | VM | Container | |---------|-----|-----------| | Başlatma süresi | Dakikalar | Saniyeler | | Boyut | GB'lar | MB'lar | | Kaynak tüketimi | Yüksek | Düşük | | İzolasyon | Tam | Proses düzeyinde | | Taşınabilirlik | Orta | Yüksek |

Temel Kavramlar

Dockerfile

Uygulamanızın container'ını nasıl oluşturacağınızı tanımlayan tarif dosyası:

# 1. Base image seç
FROM node:20-alpine

# 2. Çalışma dizinini belirle
WORKDIR /app

# 3. Bağımlılıkları kopyala ve yükle
COPY package*.json ./
RUN npm ci --production

# 4. Uygulama kodunu kopyala
COPY . .

# 5. Build et
RUN npm run build

# 6. Port aç
EXPOSE 3000

# 7. Başlat
CMD ["npm", "start"]

Image

Dockerfile'dan oluşturulan, değiştirilemez (immutable) şablon. Katmanlı yapıda (layers) saklanır.

# Image oluştur
docker build -t bilgeone:v1.0 .

# Image listele
docker images

Container

Image'den oluşturulan çalışan instance:

# Container başlat
docker run -d -p 3000:3000 --name bilgeone bilgeone:v1.0

# Container izle
docker logs bilgeone
docker stats bilgeone

Docker Compose

Birden fazla container'ı birlikte yönetme:

# docker-compose.yml
version: '3.8'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgres://db:5432/bilgeone
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    environment:
      - POSTGRES_DB=bilgeone
      - POSTGRES_PASSWORD=secret
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:
# Tüm servisleri başlat
docker compose up -d

# Tüm servisleri durdur
docker compose down

Docker Best Practices

1. Küçük Base Image Kullanın

# ❌ 1.1 GB
FROM node:20

# ✅ 130 MB
FROM node:20-alpine

2. Multi-stage Build

# Build aşaması
FROM node:20-alpine AS builder
WORKDIR /app
COPY . .
RUN npm ci && npm run build

# Üretim aşaması
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/package*.json ./
RUN npm ci --production
CMD ["npm", "start"]

3. .dockerignore Kullanın

node_modules
.git
.env
*.md

4. Katman Sırasını Optimize Edin

Sık değişen dosyaları en sona koyarak cache'den yararlanın.

Yaygın Docker Komutları

| Komut | Açıklama | |-------|----------| | docker build | Image oluştur | | docker run | Container başlat | | docker ps | Çalışan container'ları listele | | docker logs | Container logları | | docker exec -it | Container'a bağlan | | docker stop | Container durdur | | docker rm | Container sil | | docker system prune | Kullanılmayan kaynakları temizle |

Sonuç

Docker, modern yazılım geliştirmenin temel taşıdır. Ortam tutarlılığı, taşınabilirlik ve deployment kolaylığı sağlar. "Bende çalışıyordu" yerine "her yerde çalışıyor" demek artık mümkün.

Docker ve container teknolojilerini LabLudus platformunda DevOps kariyer yolunda interaktif olarak öğrenin.

Related Posts

IaC Nedir?

Infrastructure as Code nedir ve neden kullanılır?

What Is Infrastructure as Code? Terraform & Automation Guide

IaC explained: Terraform, Pulumi, CloudFormation for infrastructure automation, version control, and repeatable deployments.