Emriva.net

Docker VDS Üzerinde Nedir? Başlangıç Rehberi

Docker ile konteyner: VDS’e Engine kurulumu, ilk container, Compose ile çoklu servis, kaynak limitleri ve üretim notları. Emriva geliştirici rehberi.

Yazılım & Deploy3 dk okumaSon güncelleme: 2026-08-12

Yazar

Yunus Emre Derin · Kurucu

Emriva Bilişim Medya Ve Reklamcılık kurucusu. VDS, dedicated sunucu ve web hosting altyapısı üzerinde ürün ve operasyon deneyimi.

Docker ne işe yarar?

Docker, uygulamanızı bağımlılıklarıyla birlikte izole bir konteynerde çalıştırmanızı sağlar. “Benim makinemde çalışıyordu” sorununu azaltır; aynı imaj geliştirme, staging ve üretimde tekrarlanır.

Klasik LAMP/LEMP kurulumunda paketler doğrudan işletim sistemine kurulur. Docker’da ise Nginx, uygulama ve veritabanı ayrı konteynerler olabilir; sürüm çakışması azalır. Bu, LAMP’ın yerini her zaman almaz — basit tek site için klasik stack hâlâ geçerlidir. Çok servisli veya mikroservis adımlarında Compose öne çıkar.

VDS ihtiyacı: root erişim, yeterli RAM (ör. app + Postgres + Redis için pratikte 4–8 GB ve üzeri) ve NVMe disk. 1 GB RAM’lik bir makinede birden fazla konteyner hızlıca swap’e düşer.

Kurulum taslağı (Linux VDS)

Aşağıdaki adımlar genel bir outline’tır; dağıtıma göre paket adları değişebilir. Üretimde resmi Docker dokümantasyonundaki dağıtımınıza özel talimatı izleyin. Örnek akış Ubuntu/Debian ailesi içindir.

1) Sistemi güncelleyin: apt update && apt upgrade. 2) Gerekli CA ve araç paketlerini kurun. 3) Docker’ın resmi apt deposunu ekleyip docker-ce, docker-ce-cli, containerd.io paketlerini kurun (veya dağıtımınızın desteklenen yolunu kullanın). 4) Servisi açın: systemctl enable --now docker. 5) Kullanıcınızı docker grubuna ekleyin: usermod -aG docker $USER — ardından oturumu yenileyin.

Doğrulama: docker version ve docker run --rm hello-world. hello-world imajı indikten sonra kısa bir başarı mesajı görürsünüz. Hata alırsanız önce daemon durumuna (systemctl status docker) ve disk doluluğuna bakın. Windows VDS’te Docker Desktop veya konteyner özelliği farklı lisans/hypervisor gereksinimleri taşır; üretim Linux VDS daha yaygındır.

İlk konteyner ve volume

Stateless bir Nginx örneği: docker run -d --name web -p 8080:80 nginx:stable. Tarayıcıdan http://SUNUCU_IP:8080 ile kontrol edin. Bitince docker stop web && docker rm web.

Veriyi konteyner içinde bırakmayın. Named volume veya bind mount kullanın: örneğin -v pgdata:/var/lib/postgresql/data. Volume’leri yedekleme planınıza dahil edin; yalnızca imajı yedeklemek veritabanını kurtarmaz.

Güvenlik: konteyneri mümkünse non-root kullanıcıyla çalıştırın, gereksiz capability vermeyin, --network host’u yalnızca bilinçli kullanın. Özel registry şifrelerini veya API anahtarlarını imaja gömmeyin; ortam değişkeni veya secret dosyası kullanın (bu rehberde sahte proprietary secret örneği yoktur).

Docker Compose ile çoklu servis

Compose, birden fazla servisi tek YAML ile ayağa kaldırır. Tipik desen: app + db + redis. Proje kökünde docker-compose.yml (veya compose.yaml) tutarsınız; docker compose up -d ile başlatır, docker compose logs -f ile izler, docker compose down ile durdurursunuz.

Üretimde her servise memory/cpu limit koyun (deploy.resources veya mem_limit alanları sürümünüze göre değişir). Restart politikası (unless-stopped) kısa kesintilerde işe yarar. Sağlık kontrolü (healthcheck) ile bağımlı servislerin hazır olmasını bekleyin.

Deploy akışı: imajı CI’da build edip registry’ye push etmek veya VDS’te git pull sonrası compose build yapmak. Basit Git deploy ve Node.js süreç yönetimi için ilgili rehberlere bakın; Compose ile PM2’yi aynı iş için karıştırmayın — birini seçin.

BileşenÖrnek rolKaynak ipucuYedekleme
appAPI / web süreci2–4 GB RAM başlangıçİmaj + env dosyası
dbPostgres / MySQLRAM + hızlı NVMeVolume dump (pg_dump vb.)
redisÖnbellek / kuyruk256–1024 MB sık yeterAOF/RDB politikası
proxyNginx / CaddyDüşük CPUKonfig dosyası Git’te

Üretim ve kaynak hijyeni

Kullanılmayan imaj ve konteynerler diski doldurur: docker system df ile bakın, bilinçli prune yapın (docker system prune -a veriyi silmez ama kullanılmayan imajları siler — production’da dikkat). Log sürücüsünü ve max-size’ı sınırlayın; aksi halde tek konteyner onlarca GB log üretebilir.

İzleme: docker stats ile anlık CPU/RAM, host’ta free -h ve df -h. Swap’e düşüyorsanız konteyner sayısını azaltın veya VDS RAM yükseltin. Paralel build ve çok konteyner için Ryzen gibi çok çekirdekli hatlar genelde daha rahattır.

Güvenlik güncellemeleri: hem host OS hem temel imajları (node:20-alpine vb.) düzenli yenileyin. Eski base image CVE biriktirir. Firewall’da yalnızca publish ettiğiniz portları açın; Compose’un iç ağı dışarıya otomatik açılmaz, -p ile publish ettiğiniz portlar açılır.

Emriva üzerinde sonraki adım

Geliştirme ve Compose denemeleri için yeterli RAM’li bir VDS seçin; yoğun paralel işlerde Ryzen VDS hatlarına bakabilirsiniz. Klasik PHP stack düşünüyorsanız LAMP/LEMP rehberi, Node süreci için Node.js deploy rehberi tamamlayıcıdır.

Sipariş sonrası SSH ile yukarıdaki outline’ı uygulayın. Takıldığınızda dağıtım adınızı, docker version çıktısını ve hata satırını destek talebine ekleyin — genel “çalışmıyor” mesajından daha hızlı ilerlenir.