Docker'ı VPS Üzerinde Kullanmak Neden Akıllıca Bir Seçim?
Bir sanal sunucunuz (VPS) varsa ve uygulamalarınızı hızlı, izole ve taşınabilir bir şekilde çalıştırmak istiyorsanız, VPS üzerinde Docker en iyi seçenektir. Docker, her uygulamayı tüm bağımlılıklarıyla birlikte hafif bir konteyner içinde paketlemenize olanak tanır. Bu, artık kitaplık sürümlerinin çakışması, ortam değişkenlerinin ayarları veya servisler arasındaki uyumsuzluklar konusunda endişelenmeyeceğiniz anlamına gelir. Bu makalede, Docker'ı VPS üzerinde kurulumdan Docker Compose ile çok servisli projeleri çalıştırmaya kadar tüm yolu ele alıyoruz.
Ön Koşullar ve Sunucu Hazırlığı
Başlamadan önce, VPS'inizin şu özelliklere sahip olduğundan emin olun:
- Ubuntu 22.04 veya 24.04 işletim sistemi (bu makaledeki komutlar bu sürümler için test edilmiştir)
- En az 1 GB RAM ve 10 GB disk alanı (hafif projeler için)
- sudo yetkisine sahip bir kullanıcıyla SSH erişimi
Önce sunucuya giriş yapın ve sistemi güncelleyin:
sudo apt update && sudo apt upgrade -y
Docker Ön Koşullarının Kurulumu
apt'nin HTTPS depolarını kullanabilmesi için birkaç yardımcı paket gereklidir:
sudo apt install -y ca-certificates curl gnupg lsb-release
VPS Üzerinde Docker Kurulumu
VPS üzerinde Docker kurmak için iki ana yöntem vardır: resmi betiği kullanmak veya Docker deposunu eklemek. Sonraki güncellemeler daha kolay olduğu için resmi depo yöntemini öneriyoruz.
Resmi Docker Deposunun Eklenmesi
Docker GPG anahtarını ekleyin:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Ardından depoyu kaynak listesine 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 > /dev/null
Docker Motoru ve Eklentilerin Kurulumu
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Kurulumdan sonra Docker servisini etkinleştirin ve başlatın:
sudo systemctl enable docker
sudo systemctl start docker
Kurulumun Kontrolü ve Kullanıcının docker Grubuna Eklenmesi
Docker komutlarını sudo olmadan kullanmak için kullanıcınızı docker grubuna ekleyin:
sudo usermod -aG docker $USER
Değişikliğin uygulanması için sunucudan çıkış yapıp tekrar giriş yapın. Ardından Docker sürümünü kontrol edin:
docker --version
Çıktı Docker version 27.x.x gibi bir şey olmalıdır.
Yaygın Hata: docker grubuna eklendikten sonra hâlâ permission denied hatası alıyorsanız, mutlaka tamamen çıkış yapıp tekrar giriş yapın. Bazen SSH servisini yeniden başlatmak da gerekebilir.
VPS Üzerinde İlk Konteynerin Çalıştırılması
Docker kurulduğuna göre, ilk konteyneri çalıştıralım. En basit test, hello-world imajını çalıştırmaktır:
docker run hello-world
Başarı mesajını görürseniz, Docker VPS'inizde doğru şekilde çalışıyor demektir. Şimdi daha gerçekçi bir örnek: bir Nginx web sunucusu çalıştırmak:
docker run -d -p 8080:80 --name my-nginx nginx
Bu komut:
-darka planda çalıştırma anlamına gelir-p 8080:80konteynerin 80. portunu sunucunun 8080. portuna eşler--namekonteyner için bir ad belirler
Şimdi tarayıcınızda http://IP_VPS:8080 adresini açın. Nginx'in varsayılan sayfasını görmelisiniz.
Konteyner Yönetimi
Konteynerleri yönetmek için birkaç yaygın komut:
docker ps # Çalışan konteynerleri listeler
docker ps -a # Tüm konteynerleri listeler
docker stop my-nginx # Konteyneri durdurur
docker start my-nginx # Konteyneri yeniden başlatır
docker rm my-nginx # Konteyneri siler
docker logs my-nginx # Günlükleri görüntüler
Docker'da Volume'ler ile Veri Yönetimi
Konteynerler doğası gereği durumsuzdur; yani konteyner dosya sistemindeki herhangi bir değişiklik, konteyner silindiğinde kaybolur. Kalıcı verileri (veritabanı veya yüklenen dosyalar gibi) saklamak için volume kullanmalısınız.
Volume Oluşturma ve Kullanma
Adlandırılmış bir volume oluşturun:
docker volume create my-data
Şimdi bu volume ile bir konteyner çalıştırın:
docker run -d -p 3306:3306 -v my-data:/var/lib/mysql --name mysql-db -e MYSQL_ROOT_PASSWORD=secret mysql:8
Bu örnekte, MySQL verileri my-data volume'ünde saklanır ve konteyneri silseniz bile veriler kalıcı olur.
Dosyalara Doğrudan Erişim için Bind Mount
Bazen konteynerin sunucudaki belirli bir klasöre doğrudan erişmesini istersiniz. Bu, bind mount ile yapılır:
docker run -d -p 8080:80 -v /home/user/html:/usr/share/nginx/html --name web nginx
Artık /home/user/html içine koyduğunuz her dosya web sunucusunda anında görülebilir. Bu yöntem yerel geliştirme için harikadır.
Yaygın Hata: Bind mount yolunun önceden var olduğundan emin olun. Hedef klasör yoksa, Docker onu root yetkisiyle oluşturur ve izin hatasıyla karşılaşabilirsiniz.
Docker Compose ile Birden Fazla Servis Çalıştırma
Gerçek projeler için genellikle aynı anda birden fazla servise ihtiyaç duyarsınız; örneğin bir web uygulaması, veritabanı ve önbellek. Docker Compose bunu basitleştirir. Bir docker-compose.yml dosyasıyla tüm servisleri tanımlayabilir ve tek bir komutla çalıştırabilirsiniz.
docker-compose.yml Dosyasının Oluşturulması
Proje için bir klasör oluşturun ve compose dosyasını oluşturun:
mkdir ~/myapp && cd ~/myapp
nano docker-compose.yml
Aşağıdaki içeriği girin — Redis ile birlikte basit bir Node.js uygulaması:
version: '3.8'
services:
app:
image: node:18-alpine
container_name: myapp
working_dir: /app
volumes:
- ./app:/app
ports:
- "3000:3000"
command: sh -c "npm install && npm start"
environment:
- REDIS_HOST=redis
depends_on:
- redis
redis:
image: redis:7-alpine
container_name: myapp-redis
volumes:
- redis-data:/data
volumes:
redis-data:
Projeyi Compose ile Çalıştırma
Şimdi app klasörünü oluşturun ve içine basit bir package.json ve index.js dosyası koyun. Ardından çalıştırın:
docker compose up -d
Bu komut her iki servisi de indirir ve çalıştırır. Durumu görüntülemek için:
docker compose ps
Günlükleri görüntülemek için:
docker compose logs -f
Sık Kullanılan Compose Komutları
docker compose down # Konteynerleri durdurur ve siler
docker compose down -v # Konteynerleri ve volume'leri siler
docker compose restart # Tüm servisleri yeniden başlatır
docker compose build # İmajları yeniden oluşturur
Yaygın Hata: Compose dosyasını değiştirdiyseniz, değişikliklerin uygulanması için mutlaka docker compose up -d komutunu tekrar kullanın. restart komutu yalnızca konteynerleri yeniden başlatır ve yapılandırma değişikliklerini uygulamaz.
VPS Üzerinde Docker Optimizasyonu ve Güvenliği
VPS üzerinde Docker'ı profesyonelce kullanmak için birkaç güvenlik noktasına dikkat edin:
- İmajları her zaman resmi ve güvenilir kaynaklardan alın
- İmajlardaki güvenlik açıklarını kontrol etmek için
docker scankullanın - Hassas ortam değişkenlerini (veritabanı şifresi gibi)
.envdosyasına koyun ve git deposundan çıkarın - Her konteynerin kaynaklarını sınırlamak için
--memoryve--cpusbayraklarını kullanın
docker run -d --memory="512m" --cpus="0.5" --name limited nginx
Özet
VPS üzerinde Docker kurmak zor bir iş değildir, ancak ayrıntılara dikkat etmek gerekir. Bu makalede Docker'ı nasıl kuracağınızı, ilk konteyneri nasıl çalıştıracağınızı, verileri volume'lerle nasıl yöneteceğinizi ve Docker Compose ile birden fazla servisi aynı anda nasıl çalıştıracağınızı öğrendiniz. Bu beceriler, modern uygulamaları bulut altyapılarına dağıtmak için temeldir. Docker çalıştırmak için istikrarlı ve yüksek hızlı bir VPS arıyorsanız, ServerNet sanal sunucu hizmetleri iyi bir seçim olabilir. Şimdi harekete geçme ve ilk konteynerinizi çalıştırma zamanı!