Kiralık Sunucu & VDS | Türkiye Lokasyon Hosting - SistemDC

Docker Nedir? Mikroservis Mimarisi ve Container Yönetimi 2026 | SistemDC

Docker ile Sunucu Yönetimi: Mikroservis Mimarisine Geçiş Rehberi

Docker ile Sunucu Yönetimi: Mikroservis Mimarisine Geçiş Rehberi

Docker ile Sunucu Yönetimi: Mikroservis Mimarisine Geçiş Rehberi

2024'te bir e-ticaret müşterimiz aradı: "Sunucuya yeni özellik ekleyince her şey bozuluyor, neden?" Cevap basitti: Monolitik mimari. Tek bir değişiklik tüm sistemi etkiliyor. 3 ay sonra Docker'a geçtik. Şimdi günde 10 deploy yapabiliyorlar, downtime sıfır. Bu yazıda Docker'ın ne olduğunu, neden mikroservis mimarisine geçmeniz gerektiğini ve nasıl başlayacağınızı anlatacağız. Spoiler: Düşündüğünüzden daha kolay.

Docker Nedir ve Neden Kullanmalısınız?

Docker, uygulamanızı ve tüm bağımlılıklarını bir container içinde paketlemenizi sağlar. Container, sanal makineden daha hafif, daha hızlı başlayan izole bir ortamdır.

Geleneksel vs Docker

Özellik Geleneksel (VM) Docker Container
Başlatma Süresi 30-60 saniye 1-3 saniye
Disk Kullanımı 10-50 GB 100-500 MB
RAM Overhead 2-4 GB MB seviyesinde
Portability Zor Çok kolay
İzolasyon Tam izolasyon Process-level

Docker'ın Avantajları

  • Tutarlı Ortam: "Benim bilgisayarımda çalışıyor" sorunu yok
  • Hızlı Deploy: Saniyeler içinde yeni versiyon
  • Kolay Rollback: Eski versiyona 10 saniyede dönün
  • Kaynak Verimliliği: Aynı sunucuda 50+ container çalışabilir
  • Mikroservis Mimarisi: Her servis bağımsız scale edilebilir

Gerçek Örnek:

Bir müşterimiz monolitik PHP uygulamasını Docker mikroservislere böldü. Önceden: 1 güncelleme = 2 saat downtime. Şimdi: Günde 15 deploy, zero downtime. Müşteri memnuniyeti %40 arttı.

Docker Kurulumu (Ubuntu 24.04)

# Eski versiyonları temizle
sudo apt remove docker docker-engine docker.io containerd runc

# Repository ekle
sudo apt update
sudo apt install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker kurulumu
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Kullanıcıyı docker grubuna ekle (sudo olmadan kullanmak için)
sudo usermod -aG docker $USER
newgrp docker

# Test
docker --version
docker run hello-world

İlk Container: Nginx Web Server

# Nginx container başlat
docker run -d -p 80:80 --name web-server nginx

# Açıklama:
# -d: Arka planda çalıştır (detached)
# -p 80:80: Host 80 -> Container 80 port mapping
# --name: Container'a isim ver
# nginx: Docker Hub'dan image indir

# Çalışan container'ları göster
docker ps

# Log'ları izle
docker logs -f web-server

# Container'a shell ile gir
docker exec -it web-server bash

# Container'ı durdur
docker stop web-server

# Container'ı sil
docker rm web-server

Dockerfile: Kendi Image'ınızı Oluşturun

Dockerfile, Docker image'ınızın tarifini içerir. Örnek: Basit bir Node.js uygulaması

# Dockerfile
FROM node:18-alpine

# Çalışma dizini
WORKDIR /app

# package.json kopyala
COPY package*.json ./

# Bağımlılıkları yükle
RUN npm install

# Uygulama kodunu kopyala
COPY . .

# Port açıklaması (dokümantasyon amaçlı)
EXPOSE 3000

# Uygulamayı başlat
CMD ["node", "app.js"]
# Image oluştur
docker build -t my-node-app:1.0 .

# Container çalıştır
docker run -d -p 3000:3000 --name node-app my-node-app:1.0

# Test
curl http://localhost:3000

Docker Compose: Multi-Container Uygulamalar

Gerçek uygulamalar birden fazla servisten oluşur: Web server, database, cache. Docker Compose ile tümünü tek komutla yönetin.

Örnek: WordPress + MySQL + Redis

# docker-compose.yml
version: '3.8'

services:
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: wppass
    volumes:
      - db_data:/var/lib/mysql
    restart: always

  redis:
    image: redis:7-alpine
    restart: always

  wordpress:
    image: wordpress:latest
    depends_on:
      - db
      - redis
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: wppass
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wp_data:/var/www/html
    restart: always

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

# Log'ları izle
docker compose logs -f

# Durumu kontrol et
docker compose ps

# Tüm servisleri durdur ve sil
docker compose down

# Volume'leri de sil (dikkat: veri kaybı!)
docker compose down -v

http://localhost:8080 adresine gidin, WordPress kurulum ekranı açılacak.

Production Ortamında Docker: Best Practices

1. Multi-Stage Build (Image Boyutunu Küçültme)

# Dockerfile (Multi-stage)
# Stage 1: Build
FROM node:18 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# Stage 2: Production
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
CMD ["node", "dist/app.js"]

# Sonuç: 1.2 GB -> 150 MB

2. Health Check

# Dockerfile
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
  CMD curl -f http://localhost:3000/health || exit 1

3. Resource Limits

# docker-compose.yml
services:
  app:
    image: my-app
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 2G
        reservations:
          cpus: '1'
          memory: 1G

4. Secrets Yönetimi

# .env dosyası (Git'e eklemeyin!)
DB_PASSWORD=super-secret-password
API_KEY=abc123xyz

# docker-compose.yml
services:
  app:
    env_file:
      - .env

5. Log Yönetimi

# docker-compose.yml
services:
  app:
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

Docker vs Kubernetes: Hangisini Kullanmalı?

Özellik Docker Compose Kubernetes
Kullanım Kolaylığı Kolay Karmaşık
Ölçek Tek sunucu Multi-node cluster
Auto-scaling Yok Var
Self-healing Manuel restart Otomatik
İdeal Kullanım Dev/test, KOBİ Enterprise, high-scale
Öneri: 10 container'dan az uygulamanız varsa Docker Compose yeterli. 50+ container, multi-server ihtiyacınız varsa Kubernetes'e geçin.

Gerçek Dünya Örneği: E-Ticaret Platformu

Mikroservis mimarisine geçen bir e-ticaret platformunun yapısı:

# docker-compose.yml (production)
version: '3.8'

services:
  # Nginx reverse proxy
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf

  # Frontend (React)
  frontend:
    build: ./frontend
    environment:
      - API_URL=http://api:3000

  # API Gateway
  api:
    build: ./api-gateway
    depends_on:
      - product-service
      - order-service
      - user-service

  # Mikroservisler
  product-service:
    build: ./services/products
    environment:
      - DB_HOST=postgres

  order-service:
    build: ./services/orders
    environment:
      - DB_HOST=postgres

  user-service:
    build: ./services/users
    environment:
      - DB_HOST=postgres

  # Database
  postgres:
    image: postgres:15
    volumes:
      - pg_data:/var/lib/postgresql/data

  # Cache
  redis:
    image: redis:7-alpine

  # Queue
  rabbitmq:
    image: rabbitmq:3-management

volumes:
  pg_data:

Avantajlar:

  • Product service'i 5 instance çalıştırabilirsiniz (yüksek trafik)
  • Order service'de bug varsa, sadece onu restart edersiniz
  • Her servis farklı takım tarafından geliştirilebilir
  • Deploy bağımsız (Product team gece deploy, Order team sabah)

SistemDC'de Docker Desteği

SistemDC sunucularında Docker fully desteklenir:

  • Kurulu Docker: Tüm VPS ve Dedicated'larda kurulu gelir
  • Private Registry: Kendi Docker registry'nizi host edebilirsiniz
  • GPU Container: NVIDIA Docker runtime (AI/ML için)
  • Managed Kubernetes: 2026 Q2'de açıyoruz
Docker Danışmanlık: Monolitik uygulamanızı mikroservislere taşımak istiyorsanız, ücretsiz mimari analizi yapıyoruz. Migrasyon planı, container stratejisi ve DevOps süreçleri için destek sağlıyoruz.

Docker ile Modernize Edin

Uygulamanızı Docker'a taşımak mı istiyorsunuz? Ücretsiz danışmanlık için bizimle iletişime geçin.

İletişim:
[email protected]
Kurumsal Whatsapp: 0224 334 02 42

Sonuç: Docker'a Geçiş Zamanı

Docker, modern yazılım geliştirmenin temel taşı haline geldi. 2026'da Docker kullanmayan bir ekip, rekabette geride kalır.

14 yıldır yüzlerce müşteriye hizmet verdik. Son 3 yılda gördük: Docker'a geçen ekipler %300 daha hızlı deploy yapıyor, downtime %80 azalıyor, geliştirici memnuniyeti artıyor.

Başlamak için karmaşık bir sisteme ihtiyacınız yok. Tek bir servisle başlayın, öğrenin, genişletin. Docker yolculuğu, ilk container'ınızı başlattığınız an başlar.


Not: Bu yazıdaki komutlar Docker 25.x ve Docker Compose v2 için test edilmiştir. Production ortamında mutlaka güvenlik ve monitoring ekleyin. Örnekler eğitim amaçlıdır, production kullanımında best practice'lere uyun.

02243340242 +902243340242