Docker Nedir? Başlangıçtan İleri Seviyeye Container Rehberi

z

zafer ak

Yazar

14 December 2025 2 dakika okuma 3 görüntülenme
Docker Nedir? Başlangıçtan İleri Seviyeye Container Rehberi
Docker container teknolojisinin temelleri, kurulumu, Dockerfile yazımı ve Docker Compose kullanımı. Mikroservis mimarisi için pratik örnekler.

Docker Nedir?

Docker, uygulamaları container'lar içinde paketleyip çalıştırmanızı sağlayan açık kaynaklı bir platformdur. Container'lar, uygulamanızı tüm bağımlılıklarıyla birlikte izole bir ortamda çalıştırır.

Container vs Virtual Machine

Virtual Machine: Her VM kendi işletim sistemini çalıştırır. Kaynak tüketimi yüksek, başlatma süresi uzun.

Container: Host işletim sisteminin çekirdeğini paylaşır. Hafif, hızlı başlatma, düşük kaynak tüketimi.

Docker Kurulumu

Ubuntu/Debian

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER

macOS

Docker Desktop'ı indirin: docker.com/products/docker-desktop

Temel Docker Komutları

# Container çalıştırma
docker run -d -p 80:80 nginx

# Çalışan container'ları listele
docker ps

# Tüm container'ları listele
docker ps -a

# Container durdurma
docker stop container_id

# Container silme
docker rm container_id

# Image listele
docker images

# Image indirme
docker pull php:8.3-fpm

Dockerfile Yazımı

FROM php:8.3-fpm

# Sistem bağımlılıkları
RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip

# PHP eklentileri
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# Composer kurulumu
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

WORKDIR /var/www

COPY . .

RUN composer install --no-dev --optimize-autoloader

EXPOSE 9000

CMD ["php-fpm"]

Docker Compose

version: "3.8"

services:
  app:
    build: .
    volumes:
      - .:/var/www
    depends_on:
      - mysql
      - redis

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - .:/var/www
      - ./nginx.conf:/etc/nginx/conf.d/default.conf

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: laravel
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - mysql_data:/var/lib/mysql

  redis:
    image: redis:alpine

volumes:
  mysql_data:

Docker Best Practices

  • Multi-stage build kullanın (image boyutunu küçültür)
  • .dockerignore dosyası oluşturun
  • Specific tag kullanın (latest yerine php:8.3-fpm)
  • Layer caching'den faydalanın
  • Root kullanıcı yerine non-root kullanıcı tercih edin

Sonuç

Docker, modern yazılım geliştirme süreçlerinin vazgeçilmez bir parçasıdır. Container teknolojisi ile uygulamalarınızı tutarlı, taşınabilir ve ölçeklenebilir hale getirebilirsiniz.

İlgili Yazılar