sunucuhataları
teknik çözüm merkezi
Ara Giriş Yap Üye Ol
🏠 Ana Sayfa 📚 Kurulum Rehberleri
Kategoriler
🌐 Web Sunucuları 🐧 İşletim Sistemleri 📦 Sanallaştırma & VPS 🖥️ Kontrol Panelleri 🔒 SSL & Güvenlik 📝 CMS & Uygulamalar 🗄️ Veritabanı 📧 Mail Sunucusu 🗨️ Forum ℹ️ Hakkımızda 📧 İletişim
Giriş Yap Üye Ol
Ana Sayfa Sanallaştırma & VPS Docker Kurulumu Docker vs Sanal Makine (VM): Fark ve Karşılaştırma
🐳 Docker Kurulumu

Docker vs Sanal Makine (VM): Fark ve Karşılaştırma

Docker container ve VM farklı mimari yaklaşımlar kullanır. Kaynak kullanımı, başlatma hızı ve izolasyon açısından hangisi sizin için uygun?

📅 1 Mayıs 2025 👁 5 görüntülenme ⏱ 4 dk okuma
𝕏 Paylaş
📋 İçindekiler göster/gizle

Container ve Sanal Makine: Temel Kavramlar

Modern yazılım geliştirme ve dağıtım dünyasında iki ana sanallaştırma yaklaşımı öne çıkmaktadır: Docker Container ve Sanal Makine (VM). Her ikisi de uygulamaları izole ortamlarda çalıştırmanızı sağlar, ancak bunu çok farklı yöntemlerle yaparlar.

Mimari Fark

Sanal Makine (VM) Mimarisi

+------------------+
|   Uygulama A     |
|   (OS + Libs)    |
+------------------+
|   Uygulama B     |
|   (OS + Libs)    |
+------------------+
|   Hypervisor     | (VMware, KVM, Hyper-V, VirtualBox)
+------------------+
|  Fiziksel Sunucu |
+------------------+

VM'ler, bir hypervisor katmanı üzerinde çalışır. Her VM tam bir işletim sistemi (kernel dahil) çalıştırır. Bu tam izolasyon sağlar ancak ağır kaynak kullanımına yol açar.

Docker Container Mimarisi

+----------+----------+----------+
| Container A| Container B| Container C|
| (App+Libs)| (App+Libs)| (App+Libs)|
+----------+----------+----------+
|         Docker Engine          |
+--------------------------------+
|    Host İşletim Sistemi        |
+--------------------------------+
|       Fiziksel Sunucu          |
+--------------------------------+

Container'lar, host işletim sisteminin kernelini paylaşır. Tam OS kopyası taşımaz; yalnızca uygulama ve bağımlılıklarını içerir. Bu yaklaşım çok daha hafif ve hızlıdır.

Temel Farklar Tablosu

ÖzellikDocker ContainerSanal Makine
Başlatma SüresiMilisaniyelerDakikalar
BoyutMB (genellikle 10-500 MB)GB (genellikle 2-50 GB)
RAM KullanımıMinimal (paylaşımlı kernel)Yüksek (tam OS)
İzolasyonSüreç düzeyinde (iyi)Donanım düzeyinde (tam)
TaşınabilirlikMükemmelİyi
GüvenlikOrtaYüksek
YönetimKolay (Dockerfile)Daha karmaşık

Docker'ın Güçlü Yönleri

Hızlı Başlatma

# Docker container saniyeler içinde başlar
docker run -d --name nginx nginx:alpine
# Container 1-2 saniyede hazır

Taşınabilirlik

# Dockerfile ile tekrarlanabilir ortam
FROM php:8.2-fpm-alpine
WORKDIR /var/www/html
COPY . .
RUN docker-php-ext-install pdo_mysql
EXPOSE 9000

"Bende çalışıyor" sorununu ortadan kaldırır. Geliştirme, test ve üretim ortamı aynıdır.

Kaynak Verimliliği

Aynı sunucuda VM ile 5-10 uygulama çalıştırabilirken, Docker ile 50-100 container çalıştırmak mümkündür.

DevOps ve CI/CD Entegrasyonu

# docker-compose.yml örneği
version: "3.8"
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./src:/var/www/html
  php:
    build: .
    volumes:
      - ./src:/var/www/html
  db:
    image: mariadb:10.11
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: myapp

VM'in Güçlü Yönleri

Tam İzolasyon

Her VM kendi kernel'ini çalıştırdığından, bir VM'deki güvenlik açığı diğer VM'leri doğrudan etkilemez. Bu özellik çok kiracılı (multi-tenant) hosting ortamlarında kritik önem taşır.

Farklı İşletim Sistemleri

Aynı host üzerinde hem Linux hem Windows VM çalıştırabilirsiniz. Docker'da ise host ve container aynı kernel tipini paylaşmak zorundadır.

Legacy Uygulama Desteği

Eski ve monolitik uygulamalar container'a taşınmadan VM'de çalıştırılabilir.

Ne Zaman Docker, Ne Zaman VM Kullanmalı?

Docker'ı Seçin Eğer:

  • Mikroservis mimarisi kuruyorsunuz
  • CI/CD pipeline'ı otomatikleştiriyorsunuz
  • Geliştirme ortamını ekip genelinde standartlaştırıyorsunuz
  • Kaynak verimliliği kritikse
  • Uygulama hızlı ölçeklenmeli ve taşınabilir olmalıysa

VM'i Seçin Eğer:

  • Tam donanım izolasyonu gerekliyse (güvenlik, uyumluluk)
  • Farklı OS kombinasyonları çalıştırmanız gerekiyorsa
  • Legacy (eski) uygulamaları çalıştırıyorsanız
  • Desktop sanallaştırması gerekiyorsa
  • Multi-tenant hosting ortamı kuruyorsanız

Docker ve VM Birlikte Kullanımı

Pratikte Docker ve VM çoğunlukla birlikte kullanılır. Bulut ortamlarında (AWS EC2, GCP Compute Engine) önce VM oluşturulur, ardından içinde Docker çalıştırılır:

Fiziksel Sunucu → Hypervisor → VM (Linux) → Docker Engine → Container'lar

Bu yaklaşım hem VM'in güvenlik izolasyonundan hem de Docker'ın esnekliğinden yararlanmayı sağlar.

Kubernetes: Container Orchestration

Birden fazla Docker container yönetmek için Kubernetes kullanılır. Otomatik ölçeklendirme, load balancing ve self-healing özellikleri sunar:

# Basit Kubernetes deployment
kubectl create deployment web --image=nginx
kubectl scale deployment web --replicas=5
kubectl expose deployment web --port=80 --type=LoadBalancer

Sonuç

Docker ve VM rakip değil, tamamlayıcı teknolojilerdir. Mikroservisler, CI/CD ve geliştirme ortamları için Docker; tam izolasyon, farklı OS desteği ve legacy uygulamalar için VM tercih edilmelidir. Modern altyapılarda ikisi birlikte kullanılır: VM üzerinde Docker çalıştırmak endüstri standardı haline gelmiştir.

🤔 Bu kurulumda sorun mu yaşıyorsunuz?

Hata mesajınızı kopyalayıp foruma konu açın. Topluluğumuz size özel durumunuza göre yardımcı olacaktır.

🗨️ Foruma Katıl & Yardım Al

Yorumlar

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

Yorum Yap

Yorumunuz onaylandıktan sonra yayınlanır.