Geliştiricilerin dilinden düşmeyen "Benim bilgisayarımda çalışıyordu, sunucuya atınca neden bozuldu?" efsanesi Docker sayesinde sonsuza dek tarihe karıştı. Peki VDS (Sanal Sunucu) sistemlerinde Container mantığı nedir ve neden klasik sanallaştırma mimarilerinden çaldığı tahtı hiçbir şeye bırakmıyor?
Container vs. Sanal Makine (VM) Farkı Nedir?
Eskiden VMWare veya VirtualBox ile bir sanal sunucu kurduğunuzda; Ana (Host) işletim sisteminin üzerine komple sıfırdan yepyeni bir işletim sistemi (10-15 GB) atılır ve bunun çekirdeği (Kernel) ayrıca sanallaştırılırdı. Kısaca, küçük bir Web uygulamasını koşması için arka planda kocaman bir işletim sistemi RAM tüketerek emülator gibi beklerdi.
Docker Container (Konteyner) İse;
Zaten var olan Host (Ana) Linux kerneli ile doğrudan konuşur. İçine gigabaytlarca işletim sistemi atmaz! Sadece yazılımın (Örn: NodeJs) çalışması için gereken ortam dosyalarını (100 MB civarı) depolar. Dockerize edilen bir uygulama, diğer projelerden %100 izole olarak çalışır ancak ana RAM / CPU havuzunu inanılmaz bir israf tasarrufuyla efektif kullanır.
VDS Sunucuda (Ubuntu/Debian) Docker Deploy (Kurulum)
Kiraladığınız taptaze, boş bir Ubuntu VDS üzerine Docker mimarisini kurmak sadece 3 kodu kopyala-yapıştır yapmaktan ibarettir:
# Repoları ve temel sertifikaları güncelle
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
# Docker'in resmi GPG imza anahtarını Ubuntu'ya ekle
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Docker kurulumunu başlat (Topluluk Sürümü)
sudo apt-get install docker-ce
Bitti! Artık sunucunuz bulut kümeleri (Cloud Clusters) kurmaya hazır devasa bir ambar halini aldı.
Docker Compose: Sihirli Değnek
Diyelim ki MERN stack bir projeniz var. (MongoDB, Express, React, Node). Eskiden olsa sunucuya MongoDB server kurulur, sürümü eşlenir, yanına nginx konur ayarlanır vs.
Docker için sadece sitenizin dizininde docker-compose.yml adlı bir metin dosyası açmanız yeterlidir:
version: '3'
services:
veritabani:
image: mongo:latest
ports:
- "27017:27017"
backend:
build: .
ports:
- "5000:5000"
depends_on:
- veritabani
Ardından terminalde docker-compose up -d dersiniz ve sistem önce veritabanınızı izole biçimde ayaklandırır, ardından Node server'ı onunla bağlar. Eskiye nazaran 2 saatlik devops işi 3 saniyede biter.
🚀 HazalHost VDS Kiralayıp Docker Dünyasına Girin
Cpanel hostinglerin sınırlamalarından kurtulup özgürlüğün tadını çıkarın! Müşterimizseniz, HazalHost'tan aldığınız kilitlenmez kaynaklara (Dedicated Ram/Cpu) sahip VDS (Sanal Sunucularımızda), Docker Containerlarınız ping ve çökme sorunları olmadan stabil şekilde çalışır.
Kimin İçin Gereklidir? Kimler Uzak Durmalı?
Eğer basit bir WordPress sitesi, düz PHP scripti vb. bir yapıyı çalıştırıyorsanız Docker fantezisi sizin sisteminizi ağırlaştırmaktan öteye gitmez. (cPanel sizin ilacınızdır).
Ancak Mikroservis mantığıyla bir yazılım kodluyorsanız; Cache sunucusu (Redis), Queue sunucusu (RabbitMQ), Veritabanı ve API servisiniz varsa, tüm bunları manuel bir Linux sistemine entegre etmek intihardır. İşte o zaman VDS kiralayıp Docker ekosistemine arkanızı yaslamalısınız.