vds-uzerinde-docker-ve-container-orkestrasyonu-rehberi

VDS Üzerinde Docker ve Container Orkestrasyonu Rehberi

Sharing is caring!

VDS, Docker ve container dünyasına hızlı bir bakış

VDS sunucunu sadece klasik web barındırma için kullanmak yerine, üzerinde onlarca izole uygulama koşturabildiğini düşün. İşte vds üzerinde docker tam bu noktada devreye giriyor. Aynı fiziksel kaynağı paylaşan ama birbirinden izole container’lar sayesinde hem esnek hem de taşınabilir bir mimari kurabiliyorsun.

Docker, uygulamaları bağımlılıklarıyla birlikte paketleyen ve her ortamda aynı şekilde çalışmasını sağlayan bir container platformu. VDS ise paylaşımlı hosting’e göre çok daha fazla kontrol ve kaynak sunan sanal sunucu modeli. İkisini birleştirdiğinde, kendi küçük bulut altyapını kurmuş oluyorsun. Bu başlangıç rehberiyle hem vds docker kurulumu tarafını hem de temel container orkestrasyonu mantığını adım adım göreceksin.

VDS üzerinde Docker kullanmanın asıl motivasyonu

Çoğu kişi VDS alıp tek bir site barındırıp bırakıyor. Oysa vds üzerinde docker kullanmaya başladığında aynı sunucuda blog, API, arka plan işlemcileri, Redis, veritabanı ve daha fazlasını düzenli bir şekilde koşturmak mümkün hale geliyor.

Birkaç temel avantajı kısaca sıralayalım:

  • İzolasyon: Her uygulama kendi container’ı içinde, diğerlerinden bağımsız çalışır.
  • Kolay taşıma: Geliştirme makinen ile VDS arasında “bende çalıştı sende niye çalışmadı” dramı büyük oranda biter.
  • Versiyon kontrolü: İstediğin imaj versiyonunu kullanabilir, gerekirse hızla geri dönebilirsin.
  • Kaynak yönetimi: Aynı VDS üzerinde birden fazla proje barındırırken CPU ve RAM kullanımını daha kontrollü yönetebilirsin.

Bunun üstüne bir de container orkestrasyonu eklediğinde, tek tek container yönetmek yerine, tüm uygulama yığınını tek bir yapılandırma dosyasıyla ayağa kaldırmak mümkün oluyor. Yani hem yönetim maliyetin hem de hata yapma payın azalıyor.

VDS üzerinde Docker kurulumuna hazırlık

Kuruluma dalmadan önce, VDS tarafında birkaç temel hazırlığı tamamlamak işini inanılmaz kolaylaştırır. Özellikle uzun vadede birçok container koşturacaksan, başlangıçta yapacağın ufak ayarlar ileride büyük fark yaratıyor.

İşletim sistemi ve kaynak seçimi

İlk karar genelde şu oluyor: Hangi dağıtımı kullanacağım? Çoğu geliştirici Ubuntu LTS sürümlerini tercih ediyor çünkü Docker dokümantasyonu ve topluluk desteği oldukça güçlü. Debian veya CentOS/AlmaLinux tarafı da gayet kullanılabilir; önemli olan senin konfor alanın.

Kaynak tarafında ise basit deneyler için bile en azından şu seviyeleri hedeflemen iyi olur:

  • 2 vCPU
  • 4 GB RAM
  • En az 40 GB SSD disk

Elbette tek bir küçük uygulama için daha düşük değerlerle de başlanabilir ama container orkestrasyonu denemek, birkaç servis eklemek ve log’ları da saklamak istediğinde bu alt sınırlar çok daha rahat bir deneyim sunar.

Temel güvenlik ve kullanıcı ayarları

VDS alır almaz root kullanıcıyla her şeyi yapmak kısa vadede pratik görünür ama uzun vadede risklidir. Genelde şu adımları uygulamak iyi bir alışkanlık:

  • Normal bir kullanıcı oluşturup sudo yetkisi vermek.
  • SSH bağlantısını şifre yerine anahtar doğrulamasıyla kullanmak.
  • Varsayılan SSH portunu değiştirmek ve basit bir firewall kuralı eklemek.

Bu adımlar Docker’a özel değil ama vds docker kurulumu sırasında yaşayabileceğin pek çok güvenlik sorununu baştan azaltır.

Adım adım vds docker kurulumu

Artık asıl olaya giriş yapabiliriz. Örnek olarak Debian/Ubuntu tabanlı bir sistem üzerinden gidelim; diğer dağıtımlarda komut isimleri farklı olsa da mantık neredeyse aynı.

Güncellemeler ve temel paketler

Önce sistemi güncellemek her zaman akıllıca bir hamle. Ardından gerekli yardımcı paketleri kurarak Docker deposunu eklemeye hazırlık yapıyoruz.

# Paketleri güncelle sudo apt update && sudo apt upgrade -y # Yardımcı paketler sudo apt install ca-certificates curl gnupg lsb-release -y

Bu noktada sistemin güncel ve temiz olması hem güvenlik hem de stabilite açısından sana artı yazar.

Docker deposunu ekleme ve kurulumu tamamlama

Şimdi resmi Docker deposunu ekleyip motoru kurabiliriz. Özetle GPG anahtarını ekleyip depo adresini tanımlıyor, ardından docker-ce paketini yüklüyoruz.

# Docker GPG anahtarını ekle sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # Depoyu ekle 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 # Depoyu güncelle ve Docker'ı kur sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io -y

Komutlar dağıtıma göre ufak farklar gösterebilir ama ana fikir aynı: resmi Docker deposunu ekle, Docker motorunu ve araçlarını yükle.

Docker servisinin test edilmesi

Kurulumun sorunsuz olup olmadığını basit bir testle görebilirsin. Önce servisin durumuna bak, ardından klasik test container’ını çalıştır.

# Servis durumu sudo systemctl status docker # Test container'ı sudo docker run hello-world

Eğer terminalde Docker’ın doğru kurulduğunu anlatan bir mesaj görüyorsan, vds docker kurulumu kısmını başarılı şekilde tamamladın demektir.

Docker yönetimini kullanıcı hesabınla yapmak

Sürekli sudo yazmak istemiyorsan, Docker grubuna kendi kullanıcı hesabını ekleyebilirsin. Özellikle geliştirme ortamlarında bu ciddi konfor sağlar.

# Kullanıcıyı docker grubuna ekle sudo usermod -aG docker $USER # Oturumu kapatıp açtıktan sonra test et docker ps

Bu adım sayesinde VDS’e her bağlandığında doğrudan docker komutlarını kullanabilir, hem hız kazanır hem de terminalini daha temiz tutarsın.

İlk container’ını çalıştır: Temel örnekler

Kurulum tamam, şimdi eğlenceli kısma geldik. VDS üzerinde docker kullanmanın gerçek gücünü görmek için basit ama işe yarar birkaç senaryo deneyebiliriz.

Basit bir web servisi ayağa kaldırmak

Diyelim ki hızlıca bir statik siteyi test etmek istiyorsun. Nginx imajı bunun için harika bir başlangıç.

# Çalışan container'ları listele docker ps # Nginx imajını indir ve çalıştır docker run -d --name benim-nginx -p 80:80 nginx:latest

Tarayıcıdan VDS IP adresine girdiğinde Nginx’in varsayılan sayfasını görüyorsan, her şey yolunda demektir. Artık aynı mantıkla farklı portlarda farklı uygulamalar ayağa kaldırabilirsin.

Veri saklamak için volume kullanımı

Container silindiğinde verilerin gitmesini istemiyorsan, volume kullanmak kritik. Örneğin bir veritabanı ya da yüklediğin dosyalar için kalıcı depolama şöyle ayarlanabilir:

# Bir volume oluştur docker volume create benim-verim # Volume kullanan bir container çalıştır docker run -d --name redis-ornek -v benim-verim:/data redis:latest

Bu sayede container yeniden oluşturulsa bile volume içinde kalan veriler korunur. Uzun vadeli projelerde container orkestrasyonu yaparken de aynı prensiple volume yönetimini kullanacaksın.

Container orkestrasyonu nedir, neden uğraşalım?

Tek bir iki container ile her şeyi idare etmek kolay. Ama işler büyüdüğünde, örneğin frontend, backend, veritabanı, cache, queue ve log toplayıcı gibi bileşenler çoğaldığında hepsini tek tek docker run komutlarıyla yönetmek çekilmez hale gelir.

İşte container orkestrasyonu tam bu noktada devreye giriyor. Temel amaçları şöyle özetlenebilir:

  • Tanımla ve çoğalt: Tüm servisleri bir dosyada tanımlayıp aynı yapıyı farklı ortamlarda hızlıca kurmak.
  • Ölçekleme: Trafik arttığında belirli servislerin kopya sayısını artırmak ya da azaltmak.
  • Servis keşfi: Container’ların birbirini sabit IP’ler yerine servis isimleriyle bulmasını sağlamak.
  • Otomatik iyileşme: Düşen container’ların yeniden ayağa kalkmasını sağlamak.

VDS üzerinde docker kullanırken bile, özellikle mikro servis tarzı yapılarda küçük çaplı da olsa container orkestrasyonu kullanmak sana ciddi esneklik kazandırır.

Tek sunucuda basit orkestrasyon senaryoları

İnsanların aklına orkestrasyon deyince hemen dev Kubernetes kümeleri geliyor. Oysa tek bir VDS üzerinde bile, düzenli ve tanımlı bir yapı kurmak için daha hafif çözümler kullanabilirsin.

En popüler yaklaşım genelde şöyle ilerliyor:

  • Geliştirme ve küçük projelerde Docker Compose ile tek sunuculuk orkestrasyon.
  • Daha büyük ama yine de nispeten basit yapılarda Docker Swarm.
  • Gerçek küme ve çoklu VDS ihtiyacı olduğunda hafif bir Kubernetes dağıtımı (örneğin k3s).

Bu rehberde odak, tek bir VDS üzerinde docker ile başlayıp, Compose ve Swarm gibi çözümlerle basit container orkestrasyonu mantığını kavramak olacak.

Docker Compose ile pratik orkestrasyon

Docker Compose, birden fazla servisi tek bir YAML dosyasında tanımlamana izin veren hafif bir araç. Tek komutla tüm stack’i ayağa kaldırıp yine tek komutla durdurabilirsin.

Basit bir örnek düşünelim: Bir web uygulaması ve bir veritabanı. Normalde iki ayrı docker run komutu yazman, network ve volume ayarlarını tek tek girmen gerekir. Compose ile ise hepsini tek dosyada tanımlayıp şu tarz bir akış yakalarsın:

  • Her servis için imaj, port, volume ve environment değişkenleri tanımlanır.
  • Servisler ortak bir network üzerinde otomatik olarak birbirini isimle görür.
  • docker compose up -d komutu ile tüm stack arka planda ayağa kalkar.

Böylece hem geliştirme ortamında hem de VDS üzerinde docker kullanırken aynı yapılandırma dosyasıyla ilerleyebilir, sürüm kontrolüne de bu dosyayı dahil edebilirsin.

Docker Swarm ile küme mantığına giriş

Bir noktadan sonra tek VDS ile yetinmeyip ikinci, üçüncü sunucuyu da eklemek isteyebilirsin. O aşamada Docker Swarm hafif ama iş gören bir orkestrasyon aracı olarak devreye giriyor.

Swarm ile:

  • Bir ya da daha fazla manager ve worker node’dan oluşan bir küme kurarsın.
  • Servisleri bu küme üzerinde dağıtık şekilde koşturursun.
  • Replica sayıları, rolling update gibi özelliklerle daha profesyonel bir dağıtım akışı kurgularsın.

İlk adımda tek VDS üzerinde docker ve Compose ile rahat ettikten sonra, aynı mantığı iki üç VDS’e yayıp küçük bir Swarm kümesi denemek hiç de zor değil.

VDS üzerinde container orkestrasyonu için pratik ipuçları

Teoride her şey harika görünebilir ama iş pratiğe geldiğinde küçük detaylar büyük fark yaratıyor. VDS ortamında container orkestrasyonu yaparken şu noktalara özellikle dikkat etmen iyi olur.

Kaynak sınırları ve performans

Her container’ın sınırsız RAM ve CPU tüketmesine izin vermek kısa vadede pratik, uzun vadede ise berbat bir fikir. Özellikle birden fazla proje aynı VDS üzerinde docker kullanıyorsa, her servise mantıklı limitler koymalısın.

  • CPU için core ve yüzde bazlı sınırlama seçeneklerini değerlendir.
  • RAM tarafında limit ve reservation ayarlarıyla en azından kritik servisleri koruma altına al.
  • Yoğun I/O yapan container’ları ayrı disk ya da volume’lere yönlendirmeyi düşün.

Böylece tek bir container’ın sapıtıp tüm sunucuyu kilitlemesinin önüne önemli ölçüde geçmiş olursun.

Log yönetimi ve izleme

Container sayısı arttıkça, log’ları “docker logs” ile izlemek tam bir eziyete dönüşür. Küçük bir VDS’de bile merkezi log ve izleme çözümleri işini kolaylaştırır.

  • Basit senaryolarda log’ları dosyalara yönlendirip döngüsel log yönetimi kullan.
  • Daha gelişmiş ihtiyaçlarda Prometheus, Grafana, Loki gibi çözümleri küçük ölçekli de olsa devreye al.
  • En azından CPU, RAM, disk ve network kullanımını periyodik olarak takip eden bir agent bulundur.

Böyle bir yapı, özellikle trafik dalgalandığında veya beklenmedik hatalar oluştuğunda nerede sorun olduğunu bulmanı ciddi anlamda hızlandırır.

Güvenlik odaklı düşünmek

Container kullanıyor olmak güvenlik problemlerini sihirli şekilde çözmüyor. VDS üzerinde docker kullanırken şu prensipleri akılda tutmak iyi bir başlangıçtır:

  • Gereksiz portları dış dünyaya açma; sadece gerçekten ihtiyaç duyduklarını yayınla.
  • Mümkün olduğunca resmi ya da güvenilir imajları tercih et.
  • Root kullanıcıyla çalışan container sayısını minimumda tutmaya çalış.
  • Düzenli olarak imajlarını güncelle ve zafiyet taramaları yap.

Bu adımlar tek başına tam koruma sağlamaz ama hem container orkestrasyonu yaparken hem de tekil servisler yönetirken güvenlik seviyeni kayda değer biçimde yükseltir.

Yedekleme ve güncelleme stratejin hazır mı?

Altyapı ne kadar “modern” olursa olsun, yedekleme olmadan hepsi kağıttan kule gibi. VDS üzerinde docker kullanırken hem imaj hem de veri tarafında bir strateji kurmak şart.

Genelde şu yapı iş görüyor:

  • Veritabanı ve kritik dosyalar için düzenli otomatik yedekleme.
  • Uygulama imajlarının versiyonlu tutulması ve registry üzerinde saklanması.
  • Güncellemeleri önce test ortamında, sonra üretimde deneyecek bir akış kurgulamak.

Böylece yeni bir versiyon kötü giderse, bir önceki imaja ve yedeklenmiş verilere dönmek dakikalar seviyesinde mümkün olur.

Geliştirme ortamından VDS’e akıcı geçiş

Günlük hayatta en çok yaşanan sıkıntılardan biri, lokal ortamda çalışan uygulamanın VDS üzerinde sorun çıkarması. Docker ve temel düzeyde container orkestrasyonu bu problemi ciddi ölçüde hafifletiyor.

İyi işleyen bir akış genelde şöyle kuruluyor:

  • Önce lokalinde docker-compose ile tüm servisi ayağa kaldır.
  • Orada test edip log’ları, bağlantıları, portları doğrula.
  • Aynı compose dosyasını ufak değişikliklerle VDS tarafında kullan.

Bu sayede “lokalde çalışıyor ama sunucuda patlıyor” döngüsünü büyük oranda kırıp, daha tahmin edilebilir bir dağıtım süreci yakalayabilirsin.

İlk gerçek projen için önerilen yol haritası

Teori ve küçük denemeler iyi ama asıl öğrenme gerçek bir proje ile geliyor. VDS üzerinde docker ve basit container orkestrasyonu kullanarak hayata geçirebileceğin örnek bir yol haritası şöyle olabilir:

  • Tek sayfalık bir frontend ve basit bir REST API.
  • PostgreSQL ya da MySQL veritabanı container’ı.
  • Redis veya benzeri bir cache servisi.
  • Nginx reverse proxy ile domain yönlendirmesi ve SSL sonlandırma.

Tüm bunları bir docker-compose dosyasında tanımlayıp VDS üzerinde ayağa kaldırdığında, aslında küçük ölçekli de olsa modern bir microservice benzeri mimariyi deneyimlemiş olacaksın.

Bir sonraki adım: Altyapını akıllıca büyüt

Buraya kadar geldiysen, artık vds docker kurulumu, temel komutlar ve giriş seviyesinde container orkestrasyonu hakkında net bir fikrin oluşmuştur. Şimdi top sende.

İlk adım olarak mevcut VDS’ini analiz et; hangi projeleri container’a taşımak kolay, hangileri için biraz daha hazırlık gerekiyor buna bak. Ardından küçük bir docker-compose yapısıyla işe gir ve her yeni servisi bu yapı içine dahil etmeye çalış.

Zamanla trafik ve ihtiyaçlar arttıkça, ikinci bir VDS ekleyip Docker Swarm ya da hafif bir Kubernetes dağıtımı denemek isteyebilirsin. Bu geçişe hazır olduğunda zaten temel kavramlara hâkim olduğun için, öğrenme eğrisi seni çok zorlamayacak.

Şimdi VDS’ine bağlanıp ilk container’ını çalıştır; birkaç saatlik deneme sonrasında, vds üzerinde docker ve container orkestrasyonu ile neleri mümkün kılabileceğini çok daha net göreceksin.

Sıkça Sorulan Sorular

VDS üzerinde Docker kullanmak için minimum sistem gereksinimleri neler olmalı?

Deneme amaçlı projeler için bile en az 2 vCPU, 4 GB RAM ve 40 GB SSD disk alanı hedeflenmesi tavsiye edilir. Tek bir basit servis daha düşük kaynaklarla da çalışabilir, ancak birden fazla container ve temel container orkestrasyonu denemek istiyorsan bu seviyeler çok daha konforlu bir deneyim sağlar.

Docker Compose ile Docker Swarm arasındaki temel fark nedir?

Docker Compose genellikle tek bir makine üzerinde birden fazla servisi tanımlamak ve yönetmek için kullanılır. Docker Swarm ise birden fazla sunucudan oluşan bir küme üzerinde servisleri dağıtık şekilde çalıştırmanı sağlar. Küçük projeler ve tek VDS için Compose çoğu zaman yeterliyken, birden fazla VDS kullanacağın senaryolarda Swarm daha uygun bir orkestrasyon çözümüdür.

VDS üzerinde Docker kullanırken güvenliği artırmak için neler yapabilirim?

Öncelikle sadece gerekli portları dış dünyaya açmalı, resmi veya güvenilir imajları tercih etmeli ve mümkün olduğunca root kullanıcısıyla çalışan container sayısını azaltmalısın. Ayrıca VDS seviyesinde firewall kullanmak, SSH için anahtar doğrulamasına geçmek ve container imajlarını düzenli olarak güncellemek güvenlik seviyeni belirgin şekilde yükseltir.

Hangi işletim sistemi VDS üzerinde Docker için daha uygundur?

Docker hemen her yaygın Linux dağıtımında çalışsa da, topluluk ve dokümantasyon desteği sayesinde Ubuntu LTS sürümleri en çok tercih edilen seçenekler arasında. Debian, AlmaLinux veya CentOS gibi dağıtımlar da rahatlıkla kullanılabilir. Önemli olan, paket yönetimine ve ekosistemine hâkim olduğun bir dağıtımı seçmen; böylece hem kurulum hem de bakım süreçleri daha sorunsuz ilerler.

Yeni Paylaşılanlar
Clear Filters

Veri merkezinde fiziksel erişimin zorlaştığı her durumda, güçlü out of band yönetim ve güvenli uzaktan sunucu yönetimi sayesinde altyapınızı kesintisiz kontrol altında tutabilirsiniz.

Trafik patladığında siteyi çökertmeden yönetmek istiyorsan, bulut auto scaling ve otomatik ölçeklendirme senaryolarını doğru kurgulaman şart. Bu yazı, pratik örneklerle yol haritanı netleştiriyor.

Yorum Yapın

Bağlantılı Makaleler