spot_imgspot_img

Top 5 This Week

spot_img

Related Posts

Ev Sunucusunda Docker mı: 2026 Pratik Rehber

Ev Sunucusunda Docker mı LXC mi VM mi: Hangi İş İçin Hangisi Daha Mantıklı?

İçindekiler

Ev Sunucusunda Docker ile Başlangıç

bu rehber, basit bir medya sunucusu ya da kişisel veri yedekleme çözümü kurarken tercih edilen ilk adım olur. Bu ekosistem, uygulama paketlerini bağımsız konteynerler içinde taşır ve kaynak tüketimini minimumda tutar. Docker’ın hızlı başlangıcı, ev sunucusu yöneticilerine kısa sürede test ve dağıtım döngülerini tamamlamayı sağlar.

İlk kurulumda Docker Hub’dan güvenli bir image çekmek yeterlidir. Örneğin, Plex medya sunucusu için plexinc/pms-docker resmi imajı uygundur.

docker run -d \
  --name plex \
  -p 32400:32400 \
  -v /media/plex:/data \
  plexinc/pms-docker

Bu komut, Plex’i arka planda başlatır, 32400 portunu haritalar ve medya klasörünü bağlar. Bu basit örnek, konteynerleştirme’nin ev sunucusu için ne kadar erişilebilir olduğunu gösterir.

Topic Overview

Docker konteynerleri, Linux çekirdeği üzerinden namespaces ve cgroups kullanarak izole bir ortam sunar. Her bir konteyner, bağımsız bir kullanıcı alanı, dosya sistemi ve ağ stak’i içerir.

LXC ise OS‑level sanallaştırma sağlar. Her LXC konteyneri, ana sistemle aynı çekirdek üzerinde çalışır ancak kullanıcı, grup, PID ve ağ ad alanları izole edilir.

VM ise tam donanım sanallaştırma yapar. KVM (Kernel Virtual Machine) ile çalışan bir VM, kendi çekirdeğini, işletim sistemini ve sanal donanımını barındırır. Hypervisor, donanım kaynaklarını sanal makinelere tahsis eder.

Örnekler:

  • Ubuntu 22.04 üzerinde çalışan Docker konteyneri – Plex, Nextcloud vb.
  • Proxmox LXC konteyneri – Nextcloud + Duplicity.
  • KVM‑tabanlı VM – Ubuntu + Minecraft sunucusu.

Why It Matters

Ev sunucusu yöneticileri için kaynak tüketimi kritik bir faktördür. Tek bir VM ile 100 GB RAM’i paylaşmak yerine, 10 GB RAM’e sahip 10 Docker konteyneri daha yüksek verimlilik sunar.

Güvenlik açıdan, VM tam izole bir ortam sağlar, ancak konteynerler sistem çekirdeğini paylaşır. Bu nedenle least privilege ilkesi ile çalışmak ve güvenli base image’ler seçmek gerekir.

Yönetim karmaşıklığı ve bakım maliyeti de farklılık gösterir. VM’ler snapshot, backup ve ölçeklenme için daha fazla yapılandırma gerektirirken, Docker konteynerleri hızlı güncellemeler ve otomatik dağıtım sağlar.

Eğer 1) yüksek performans, 2) düşük kaynak tüketimi, 3) hızlı dağıtım gerekiyorsa Docker; 1) maksimum izole ortam, 2) uzun vadeli stabilite, 3) donanım destekli uygulamalar için VM tercih edilir. LXC ise her iki dünya arasında bir denge sunar.

Core Concepts

Konu Docker LXC VM
İzolasyon Düzeyi Namespaces (CPU, PID, Network, Mount) Namespaces + cgroups Tam donanım sanallaştırma
Kaynak Paylaşımı Cgroups ile limit Cgroups + namespaces Hypervisor kontrolü
Ağ Yapılandırması Bridge, macvlan, IPVLAN Bridge, macvlan, IPVLAN NAT / Bridged
Güvenlik Katmanları Seccomp, AppArmor, SELinux Seccomp, AppArmor Tam izolasyon, firewall
Snapshot/Rollback Docker commit / image LXC snapshot VM snapshot
Boot Süresi Neredeyse anında Neredeyse anında 30‑60 saniye

Örnek

Docker’da AppArmor profili eklemek için --security-opt apparmor:unconfined flag’i kullanılabilir. LXC’de seccomp filtreleriyle belirli syscalls engellenir. VM snapshot alırken qemu-img snapshot komutu ile anlık durum kaydedilir.

Practical Examples

Senaryo Teknoloji Konteyner/VM Adı Konfigürasyon Örneği
Medya Sunucusu (Plex + Subsonic) Docker Compose plex-subsonic docker-compose.yml (aşağı)
Kişisel Veri Yedekleme (Nextcloud + Duplicity) LXC nextcloud-dp /etc/pve/lxc/101.conf
Oyun Sunucusu (Minecraft) VM minecraft KVM VM + /etc/qemu/
# docker-compose.yml
version: '3.8'
services:
  plex:
    image: plexinc/pms-docker
    container_name: plex
    ports:
      - "32400:32400"
    volumes:
      - /media/plex:/data
    environment:
      - PLEX_UID=1000
      - PLEX_GID=1000
  subsonic:
    image: subsonic/subsonic
    container_name: subsonic
    ports:
      - "4040:4040"
    volumes:
      - /media/subsonic:/var/opt/subsonic

Bu yapılandırma, hem Plex hem de Subsonic’u tek bir Docker Compose dosyasında çalıştırır.

LXC Örneği – Nextcloud + Duplicity

pct create 101 ubuntu-22.04-standard-v20240904.iso \
  --cores 2 --memory 2048 --net0 name=eth0,bridge=vmbr0,firewall=1,ip=dhcp \
  --rootfs local-lvm:10
pct set 101 -lxc.conf "lxc.cgroup2.devices.allow = c 1:* rwm"
pct start 101

VM Örneği – Minecraft Sunucusu

qm create 201 --name minecraft --memory 8192 --cores 4 \
  --net0 virtio,bridge=vmbr0,firewall=1 \
  --scsi0 local-lvm:vm-201-disk-0,format=qcow2 \
  --ostype l26 --storage local-lvm --bootdisk scsi0

qm set 201 --sshkeys /root/.ssh/id_rsa.pub
qm start 201

Common Mistakes

Hata Nedeni Çözüm
Yanlış image sürümü Docker Hub’da eski tag kullanımı Güncel latest veya stable tag’ini çekin
Root filesystem erişimi LXC içinde /var/lib/lxc/… erişimi lxc.mount.auto = proc:rw veya lxc.cgroup2.devices.allow ekleyin
Kapalı portlar VM’in firewall’da kapalı iptables -A INPUT -p tcp --dport 25565 -j ACCEPT
Kaynak sınırlama Cgroups ayarlanmamış --memory=512m --cpus=1 flag’lerini ekleyin
Eksik loglama Syslog’e yönlendirme yok docker logs -f yerine journald entegrasyonu ekleyin
Geri dönüş (rollback) eksikliği Yeni image deploy sonrası sorun docker tag veya VM snapshot’ları alın
Güvenlik güncellemeleri ihmal edilmesi Base image’de eski paketler docker pull --quiet ve apt-get upgrade

Bu hatalar, ev sunucusunda sık karşılaşılan sorunlardır. Çözüm önerileri, yapılandırma dosyalarına eklenerek otomatikleştirilebilir.

Best Practices

Alan Öneri Uygulama
Least Privilege Konteynerleri --user flag’i ile uygulama kullanıcılarıyla çalıştırın. docker run --user 1000:1000
Rollback Her yeni image için docker tag veya VM snapshot’ları alın. docker tag plex:v2 plex:v1
Patch Yönetimi Base image’leri düzenli olarak güncelleyin. docker pull --quiet plexinc/pms-docker && docker-compose up -d
Otomatik Log Toplama ELK, Loki veya Promtail ile logları merkezi sunucuya gönderin. docker run -d --name loki loki/loki
Yedekleme Disk snapshot’ları, veri kopyalama script’leri ve şifreli arşivleme kombinasyonu kullanın. rsync -avz --delete /data /backup
Ağ İzolasyonu Docker’ın --net=none veya LXC’in lxc.network.type ile izole ağlar kurun. --net=none
İzleme Prometheus + cAdvisor ile konteyner kaynak kullanımını ölçün. docker run -d -p 9090:9090 --name=cadvisor google/cadvisor
Güvenlik Denetimi docker scan ve LXC’in lxc-checkconfig ile sistemini test edin. docker scan plexinc/pms-docker
Konfigürasyon Yönetimi Ansible veya Terraform ile altyapıyı kodlaştırın. ansible-playbook deploy.yml

Örnek: Prometheus ile Kaynak İzleme

# prometheus.yml
scrape_configs:
  - job_name: 'docker'
    static_configs:
      - targets: ['localhost:9090']
docker run -d \
  -p 9090:9090 \
  --name prometheus \
  -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
  prom/prometheus

Add Concrete Examples and Real-World Scenarios

1. Plex + Subsonic Docker Compose

  • Docker Compose dosyasını /srv/docker/plex-subsonic/docker-compose.yml içine koyun.
  • docker compose up -d ile başlatın.
  • 10 GB RAM, 1 CPU ile 100 TB medya koleksiyonunu yönetebilirsiniz.
  • Log toplama için --log-driver=syslog ekleyin.
docker compose up -d --build

2. Nextcloud + Duplicity LXC

  1. LXC’yi Proxmox’da LXC template ile oluşturun.
  2. /etc/pve/lxc/101.conf içinde lxc.cgroup2.devices.allow = c 1:* rwm ayarı ile /dev/fuse erişimi verin.
  3. duplicity script’ini cron’a ekleyerek haftalık yedekleme yapın.
*/30 * * * * /usr/bin/duplicity --full-if-older-than 1M /var/www/nextcloud /backup/nextcloud

3. Minecraft VM

  • KVM VM’yi 4 CPU, 8 GB RAM, 100 GB diskle kurun.
  • minecraft_server.jar dosyasını /srv/minecraft içinde çalıştırın.
  • systemd servisi ile otomatik yeniden başlatma ve log toplama yapılandırın.
# /etc/systemd/system/minecraft.service
[Unit]
Description=Minecraft Server
After=network.target

[Service]
User=minecraft
WorkingDirectory=/srv/minecraft
ExecStart=/usr/bin/java -Xms2G -Xmx4G -jar server.jar nogui
Restart=on-failure

[Install]
WantedBy=multi-user.target

Bu adımlar, ev sunucusu yöneticisinin gerçek dünya senaryolarında hangi teknolojiyi ne zaman kullanacağını netleştirir.

Decision Matrix

Kriter Docker LXC VM
Performans Yüksek Orta Düşük
Güvenlik Orta Yüksek Çok Yüksek
Bakım Kolaylığı Kolay Orta Zor
Maliyet Düşük Orta Yüksek
Esneklik Yüksek Orta Düşük
İzleme Kolay Orta Zor
Yedekleme Basit Orta Kompleks

Her bir kriteri kendi ortamınıza göre 1‑5 arası puanlayarak en uygun çözümü seçin. Örneğin, “Güvenlik” puanı 5 ise VM tercih edin; “Performans” puanı 5 ise Docker tercih edin.

Deployment Checklist

  • ☐ Güvenli registry’den image çekildi
  • ☐ Resource limits (memory, CPU) tanımlandı
  • ☐ Health check tanımlandı
  • ☐ Ağ izolasyonu yapılandırıldı
  • ☐ Yedekleme stratejisi belirlendi
  • ☐ Loglama ve monitoring yapılandırıldı

Security Checklist

  • ☐ Least privilege kullanıcı ayarlandı
  • ☐ Secure base image (ör. alpine) kullanıldı
  • ☐ Logging ve monitoring yapılandırıldı
  • ☐ Backup ve snapshot stratejisi belirlendi
  • ☐ Security audit raporları oluşturuldu
  • ☐ Düzenli olarak image güncellemeleri yapıldı
  • ☐ Firewall ve iptables kuralları gözden geçirildi
  • ☐ Giriş denetimleri (fail2ban) eklendi

FAQ

Ev Sunucusunda Docker mı, LXC mi, yoksa VM mi daha mantıklı?

Docker, hafif uygulama dağıtımı için ideal. LXC, sistem düzeyinde izole ortam ve daha az kaynak tüketimi sunar. VM ise tam izolasyon ve donanım destekli uygulamalar için uygundur. Hangi teknolojinin daha mantıklı olduğu, kullanım senaryonuza ve kaynak kısıtlamanıza bağlıdır.

Ev Sunucusunda Docker mı, LXC mi, yoksa VM mi kullanırken en yaygın hata nedir?

En yaygın hata, root kullanıcıyla konteyner çalıştırmak ve izole alanları yanlış yapılandırmaktır. Ayrıca, image güncellemelerini ihmal etmek de güvenlik açıklarına yol açar. Bu hatalar, docker run --user ve lxc.cgroup2.devices.allow gibi ayarlarla önlenebilir.

Konkrete örnekler ve gerçek dünya senaryoları nasıl ele alınmalı?

Gerçek senaryolarda, her teknoloji için minimum yapılandırma dosyaları ve otomatik yedekleme script’leri hazırlanmalıdır. Örneğin, Plex + Subsonic için Docker Compose, Nextcloud + Duplicity için LXC, Minecraft için VM kullanarak, hem performans hem de güvenlik dengesi sağlanabilir.

Ev sunucusunda konteynerleştirme ile sanallaştırma arasında seçimi etkileyen faktörler nelerdir?

Faktörler arasında CPU/Memory tüketimi, uygulama bağımlılıkları, güncelleme sıklığı, güvenlik gereksinimleri ve yönetim karmaşıklığı yer alır. Docker, hızlı dağıtım ve düşük kaynak tüketimi sunarken, VM, tam izolasyon ve donanım desteği sağlar. LXC ise bu iki uç arasında bir denge sunar.

Hangi durumda LXC kullanmak, Docker ile VM arasında bir avantaj sağlar?

LXC, sistem bileşenlerini (örn. PostgreSQL) ayrı bir konteynerde çalıştırırken, uygulama konteynerlerinden izole edilmesini istediğinizde uygundur. Docker konteynerleri içinde aynı OS çekirdeğini paylaşır; LXC ise aynı çekirdekte sanal bir ortam yaratır, bu da CPU/Memory kullanımını daha verimli hale getirir. Ayrıca LXC, VM’lerin tam donanım izole edilme seviyesini geçmez ancak güvenlik için ek cgroup ve seccomp filtreleri sunar.

Ev sunucusunda Docker, LXC ve VM için birden fazla ortamda yedekleme nasıl yapılır?

  • Docker: docker export ile konteyner dosyasını çıkarıp, docker save ile image’i kaydedin. Ardından rsync ile bu dosyaları uzak sunucuya aktarın.
  • LXC: pct snapshot komutuyla snapshot alın, sonra pct dump ile dosyaya aktarın.
  • VM: qemu-img snapshot ile snapshot alın, scp ile uzak sunucuya kopyalayın.
  • Ortak: borgbackup gibi arşivleme aracı ile dosya sistemini şifreli biçimde yedekleyin.

Ev sunucusunda Docker konteynerlerini nasıl ölçeklendirebilirim?

Docker Compose yerine Docker Swarm veya Kubernetes kullanabilirsiniz. Basit ölçeklendirme için docker service scale web=3 gibi komutlarla pod sayısını artırabilirsiniz. Ancak ev ortamında tek bir host varsa, CPU/Memory sınırlamalarıyla çok sayıda konteyner çalıştırmak riskli olabilir; bu yüzden her konteynerin kaynak limiti belirlenmeli.

LXC konteynerinde kullanıcı bazlı kaynak sınırlaması nasıl yapılır?

lxc.cgroup2.cpu.max ve lxc.cgroup2.memory.max satırlarını /etc/pve/lxc/101.conf içinde ekleyin. Örneğin:

pct set 101 -lxc.conf "lxc.cgroup2.cpu.max = 50000 100000"
pct set 101 -lxc.conf "lxc.cgroup2.memory.max = 512M"

Bu, konteynerin CPU zamanını %50 ile sınırlar ve 512 MB RAM kullanmasını sağlar.

VM’de düşük gecikme ile ağ erişimi nasıl sağlanır?

VM’yi Bridged ağ tipine (ör. bridge=vmbr0) ayarlayın. Ayrıca qemu-guest-agent ile ağ konfigürasyonunu dinamik olarak güncelleyin. Yüksek performans için VM’de e1000 yerine virtio-net sürücüsü kullanın.

Sonuç

bu rehber, LXC ve VM arasında seçim yaparken, kaynak tüketimi, izolasyon düzeyi, yönetim kolaylığı ve güvenlik başlıca kriterlerdir. Docker, hafif ve hızlı dağıtım için tercih edilirken, VM tam izolasyon ve donanım desteği sunar. LXC ise bu iki uç arasında bir denge sağlar.

bu rehber, LXC ve VM karşılaştırması ile detaylı analiz, ve Ev Sunucusunda Docker, LXC ve VM için sorun giderme rehberi ile karşılaşılan hataları nasıl çözeceğinizi öğrenebilirsiniz.

Bütün bu bilgiler, ev sunucusu yöneticilerinin risk-first yaklaşımını benimseyerek, güvenli, sürdürülebilir ve verimli bir ortam kurmalarını sağlar.

Ek Kaynaklar:
Reddit topluluğunda tartışılan örnekler
Proxmox forumundaki inceleme
Medium blog yazısındaki detaylar
AWS karşılaştırma rehberi

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

Popular Articles