Docker Compose ile Çoklu Container Yönetimi (VPS)

Son doğrulama: Eylül 2026 · Ubuntu 24.04 test sunucusunda denendi

Hızlı çözüm

Docker Compose kullanımı VPS‘nizde birden fazla container’ı (ör. web sunucusu + önbellek) tek bir YAML dosyasıyla tanımlayıp tek komutla ayağa kaldırmanızı sağlar; container’lar arasındaki ağ ve başlatma sırasını Compose kendi yönetir.

  1. Proje klasörü açın ve içine docker-compose.yml dosyası oluşturun.
  2. Dosyaya servisleri (services: altında her container’ı) tanımlayın.
  3. docker compose up -d ile tüm servisleri arka planda başlatın.
  4. docker compose ps ile hangi container’ın hangi portta çalıştığını doğrulayın.
Panel Yok — komut satırından (SSH veya konsol)
Sistem VPS/VDS: Ubuntu 24.04 (Docker Engine kurulu olmalı)
Yetki root veya docker grubunda bir kullanıcı
Narhost ürünü VPS Sunucu

Başlamadan önce

  • Sunucunuzda Docker Engine kurulu olmalı; kurulu değilse önce Ubuntu’da Docker kurulumu kartındaki adımları tamamlayın.
  • Docker Compose Engine’e bağlı bir eklenti (docker-compose-plugin) olarak gelir; ayrı bir kurulum gerekmez, docker compose version ile kontrol edin.
  • Sunucunuza root veya sudo yetkili bir kullanıcıyla bağlanabiliyor olmalısınız; SSH yanıt vermiyorsa konsol bağlantısını kullanın.
  • Her servisin dışarıya açacağı portun (ör. 8080) boş olduğundan emin olun.

Docker Compose kullanımı VPS’te neden tercih edilir

Tek bir container’ı docker run ile başlatmak basit bir siteyi ayakta tutar, ama gerçek bir uygulama genelde birden fazla parçadan oluşur: bir web sunucusu, bir veritabanı, bir önbellek katmanı. Bu parçaları elle, tek tek docker run komutlarıyla başlatıp aralarındaki ağı kurmak hem hataya açıktır hem de tekrarlanabilir değildir. Docker Compose kullanımı VPS’te bu sorunu tek bir docker-compose.yml dosyasıyla çözer: hangi container’ların çalışacağı, hangi portları açacağı, hangi ortam değişkenlerini alacağı ve aralarındaki bağımlılık sırası tek dosyada tanımlanır.

Sunucunuzu yeniden kurmanız ya da aynı yapıyı başka bir VPS’e taşımanız gerektiğinde tek yapmanız gereken bu dosyayı kopyalayıp docker compose up -d çalıştırmaktır; container’lar aynı ağ ve bağımlılık sırasıyla yeniden ayağa kalkar. Bu, çok container’lı bir yapıyı elle adım adım kurmaktan çok daha az hataya açık bir yöntemdir. Dosyanın söz dizimi (servisler, ağlar, volumeler) Docker Compose’un resmi dokümantasyonunda tanımlanır; bu kart en sık kullanılan alanları kapsar.

Docker compose kullanımı vps — proje dosyasını yazma, servisleri başlatma ve kapatma adımları
Proje klasörünü aç, servisleri tanımla, ayağa kaldır, durumu izle, işin bitince kapat.

Docker Compose ile çok container’lı yapı nasıl kurulur, adım adım

  1. Proje klasörü oluşturun ve içine girin:
    mkdir -p ~/demo-proje && cd ~/demo-proje
  2. docker-compose.yml dosyasını yazın:
    services:
      web:
        image: nginx:alpine
        ports:
          - "8080:80"
        depends_on:
          - cache
      cache:
        image: redis:alpine
        expose:
          - "6379"

    Bu tanım iki servisi kapsar: dışarıya 8080 portundan açılan bir web sunucusu ve yalnızca web servisinin erişebildiği bir önbellek. depends_on cache’in web’den önce başlamasını sağlar.

  3. Sürümü doğrulayıp servisleri başlatın:
    docker compose version
    docker compose up -d

    Beklenen sonuç: önce Docker Compose version v2.x ya da üzeri, ardından iki imajın çekilip iki container’ın Created/Started durumuna geçtiğini gösteren satırlar. Test sunucusunda demo-proje-cache-1 ve demo-proje-web-1 bu sırayla oluşturulup başlatıldı.

  4. Durumu ve dış erişimi kontrol edin:
    docker compose ps
    curl -sI http://localhost:8080

    Beklenen sonuç: ps çıktısında her iki container Up durumunda, web servisinin PORTS sütununda 0.0.0.0:8080->80/tcp görünür; curl ise HTTP/1.1 200 OK döndürür. Test sunucusunda birebir bu sonuç alındı.

  5. Bir servisin loglarına bakın:
    docker compose logs --tail=20 cache

    Beklenen sonuç: seçtiğiniz servisin (burada cache) son satırlarını gösterir; test sunucusunda Redis’in “Ready to accept connections” satırı bu şekilde görüldü. Diğer alt komutların tam listesi docker compose komut referansında yer alır.

  6. İşiniz bittiğinde yapıyı kapatın:
    docker compose down

    Beklenen sonuç: her iki container ve aralarında kurulan sanal ağ sırayla durdurulup kaldırılır; veriler bir volume tanımlamadıysanız container ile birlikte silinir.

Dikkat

docker compose down yalnızca container ve ağı kaldırır; kalıcı veri tutmak istiyorsanız (ör. veritabanı) docker-compose.yml içinde bir volumes: tanımı kullanın, aksi halde down sonrası veri kaybolur.

Doğrulama

Sonuç

docker compose ps her iki servisi de Up durumunda gösteriyor ve tarayıcıdan sunucu IP’nizle :8080 adresini açtığınızda web servisi yanıt veriyorsa Docker Compose kullanımı VPS’te başarıyla tamamlanmış demektir.

Hâlâ çözülmediyse

  • docker compose komutu bulunamıyor. Docker Engine eski bir sürümle kurulmuş olabilir; Docker kurulumu kartındaki adımları izleyip docker-compose-plugin paketinin kurulduğundan emin olun.
  • Bir servis Restarting döngüsünde kalıyor.docker compose logs <servis adı> ile o servisin hata mesajını okuyun; genelde yanlış ortam değişkeni veya eksik bağımlılıktan kaynaklanır.
  • Port dışarıdan açılmıyor.docker-compose.yml‘daki ports: satırının doğru yazıldığından ve sunucunuzda o portu engelleyen bir güvenlik duvarı kuralı olmadığından emin olun.
  • Disk hızla doluyor. Kullanılmayan imaj ve container katmanları /var/lib/docker altında birikir; disk kullanımını denetleme kartındaki adımlarla durumu kontrol edin, ardından docker system prune ile temizleyin.

Narhost desteği

Docker Compose kullanımı sırasında container’lar başlamıyorsa destek talebinize sunucunuzun IP adresini, docker-compose.yml içeriğini ve docker compose logs çıktısını ekleyin.

Destek talebi aç

Sıkça sorulan sorular

Docker Compose kullanımı VPS’te ücretsiz mi?

Evet. Docker Compose, Docker Engine kurulumuyla birlikte gelen docker-compose-plugin paketi üzerinden ücretsiz kullanılır; ayrı bir lisans ya da abonelik gerekmez.

docker-compose (tire ile) ve docker compose (boşlukla) farklı mı?

Eski docker-compose ayrı bir Python paketiydi ve artık güncellenmiyor. Güncel Docker sürümlerinde komut docker compose (boşlukla) şeklindedir ve doğrudan Docker CLI’nin bir eklentisidir; bu kart güncel docker compose komutunu kullanır.

Kaç container’a kadar tek dosyada tanımlayabilirim?

Teknik bir üst sınır yoktur; sunucunuzun işlemci ve bellek kapasitesi sınırı belirler. Beş on container’lık yapılar tek docker-compose.yml dosyasında rahatlıkla yönetilir.

Compose dosyasındaki verileri sunucu yeniden başlayınca kaybeder miyim?

Hayır, container’lar restart: unless-stopped gibi bir politika ile tanımlanmışsa Docker servisi başladığında otomatik ayağa kalkar; kalıcı veri için ayrıca volumes: tanımlamanız gerekir.

Bu makale sorununuzu çözdü mü?

Çözemediniz mi?

Teknik ekibimiz sunucu tarafındaki ayarları sizin için kontrol edebilir. Destek talebinizde alan adınızı ve aldığınız hata metnini paylaşmanız süreci hızlandırır.

Etiketler: docker-composedocker

İlgili çözümler