Docker Nedir ve Neden VPS'te Kullanmalısınız?
Docker, uygulamalarınızı container adı verilen izole ortamlarda çalıştırmanızı sağlayan bir platformdur. Geleneksel sunucu yönetimine göre birçok avantaj sunar:
- Tutarlı ortam: Geliştirme, test ve production ortamları aynı
- Kolay deploy: Yeni sürümleri saniyeler içinde yayına alın
- İzolasyon: Her uygulama kendi bağımlılıklarıyla çalışır
- Kaynak verimliliği: VM'lere göre çok daha az overhead
- Kolay ölçekleme: Containerları çoğaltarak yatay ölçekleme
VPS'e Docker Kurulumu (Ubuntu 22.04)
# Eski sürümleri kaldırın
sudo apt remove docker docker-engine docker.io containerd runc
# Gerekli paketleri kurun
sudo apt update
sudo apt install ca-certificates curl gnupg -y
# Docker GPG anahtarını ekleyin
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Repository ekleyin
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
# Docker kurulumu
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# Kullanıcınızı docker grubuna ekleyin
sudo usermod -aG docker $USER
İlk Container'ınızı Çalıştırma
# Nginx web sunucusu
docker run -d --name webserver -p 80:80 nginx:latest
# Container durumunu kontrol edin
docker ps
# Logları görüntüleyin
docker logs webserver
Docker Compose ile Çoklu Servis Yönetimi
Gerçek dünya uygulamaları birden fazla servisten oluşur. Docker Compose ile hepsini tek bir dosyada tanımlayabilirsiniz:
# docker-compose.yml
version: "3.8"
services:
web:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./html:/var/www/html
depends_on:
- app
restart: always
app:
build: ./app
environment:
- DB_HOST=db
- DB_NAME=myapp
- DB_USER=appuser
- DB_PASS=secure_password
volumes:
- ./app:/var/www/app
restart: always
db:
image: mysql:8.0
environment:
- MYSQL_ROOT_PASSWORD=root_password
- MYSQL_DATABASE=myapp
- MYSQL_USER=appuser
- MYSQL_PASSWORD=secure_password
volumes:
- db_data:/var/lib/mysql
restart: always
redis:
image: redis:7-alpine
restart: always
volumes:
db_data:
# Tüm servisleri başlatın
docker compose up -d
# Durumu kontrol edin
docker compose ps
# Logları takip edin
docker compose logs -f
Production Best Practices
1. Güvenlik
- Container'ları root olmayan kullanıcı ile çalıştırın
- Resmi ve minimal imajlar kullanın (Alpine tabanlı)
- Hassas verileri Docker Secrets ile yönetin
- İmajları düzenli olarak güncelleyin
2. Kaynak Limitleri
services:
app:
deploy:
resources:
limits:
cpus: "1.0"
memory: 512M
reservations:
cpus: "0.5"
memory: 256M
3. Log Yönetimi
services:
app:
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
4. Healthcheck
services:
web:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 3
Yaygın Docker Kullanım Senaryoları
- Web uygulamaları: Laravel, Django, Node.js uygulamalarını containerize edin
- Veritabanları: MySQL, PostgreSQL, MongoDB'yi izole çalıştırın
- Reverse proxy: Traefik veya Nginx Proxy Manager ile birden fazla siteyi yönetin
- CI/CD: GitLab Runner, Jenkins gibi araçları container olarak çalıştırın
- Monitoring: Prometheus + Grafana stack'ini kolayca kurun
Sonuç
Docker, VPS sunucu yönetimini büyük ölçüde kolaylaştırır ve profesyonelleştirir. Uygulamalarınızı hızlı deploy edebilir, kolayca ölçekleyebilir ve güvenilir bir şekilde çalıştırabilirsiniz.
BulutUp VPS sunucuları, Docker workload'ları için optimize edilmiş NVMe SSD diskler ve yüksek bant genişliği sunar. Dakikalar içinde sunucunuzu kurun ve Docker ile modern uygulama yönetimine geçin.