Docker için VPS gereksinimleri
Docker'ın kolaylığı, tüm projenin — uygulama, veritabanı, kuyruk, ters proxy — tek bir compose.yaml dosyasıyla tanımlanması ve dakikalar içinde bir sunucudan diğerine taşınabilmesidir. Ancak sanal sunucunun kendisine, sıradan bir PHP sitesinde olmayan gereksinimler getirir. Yukarıdaki tabloda bunları karşılayan paketler bırakıldı: KVM, en az 2 çekirdek, 2 GB bellek ve 30 GB NVMe; çekirdek başına fiyatı daha düşük olanlar en üstte.
Sanallaştırma: neden KVM
Konteynerler Linux çekirdeğinin mekanizmalarını kullanır: ad alanları (namespaces), cgroups, ağ köprüleri, iptables. KVM'de VDS'in kendi çekirdeği vardır ve Docker resmî depodan sürprizsiz kurulur. OpenVZ ve LXC'de çekirdek ana makineyle ortaktır: Docker orada ya hiç çalışmaz ya da yalnızca sağlayıcının özel ayarlarıyla, ağ kısıtlamaları ve eski sürümlerle çalışır. Bunu araştırmaya bir akşam harcamaya değmez — doğrudan KVM VPS seçin.
İkinci nokta depolama sürücüsüdür. Docker varsayılan olarak overlay2 kullanır ve bunun için çekirdekte OverlayFS desteği gerekir. Destek yoksa Docker, imajın her katmanını tamamen kopyalayan vfs sürücüsüne geri döner: disk kat kat daha hızlı dolar, derlemeler yavaşlar. Sürücüyü kurulumdan hemen sonra docker info komutuyla kontrol edebilirsiniz.
Birkaç konteyner için ne kadar bellek gerekir
Docker daemon'ının kendisi yaklaşık 100 MB kaplar. Gerisini yığının bileşenlerine göre hesaplayın:
- Nginx veya Caddy — 20–50 MB;
- Python, Node.js veya PHP-FPM üzerinde uygulama — süreç başına 100–300 MB;
- PostgreSQL veya MySQL — 200 MB'tan başlayarak, yük altında belirgin biçimde daha fazla;
- Redis — onlarca megabayt artı veri hacmi.
Tipik «proxy + uygulama + veritabanı + Redis» yığını 1–1,5 GB'a sığar; bu yüzden 2 GB makul bir asgari değerdir, tek sunucuda birden fazla proje için ise 4 GB RAM daha iyidir. Konteynerlere bellek limitleri koyun ve bir swap dosyası ekleyin: aksi hâlde şişen tek bir süreç, OOM killer aracılığıyla komşularını da düşürür.
Disk: alan fark edilmeden tükenir
İmajlar onlarca megabayttan bir gigabayta kadar yer kaplar ve her güncellemede eski sürümler diskte kalır. Konteyner logları varsayılan olarak boyut sınırı olmadan yazılır. Buradan üç kural çıkar: daemon.json içinde log rotasyonunu ayarlayın (max-size ve max-file parametreleri), düzenli olarak docker system prune çalıştırın ve 30 GB'tan az disk almayın. Konteynerlerde veritabanları çalışıyorsa NVMe paketlerine göz atın — rastgele yazma işlemlerinde SATA SSD ile arasındaki fark hissedilir.
Ağ, güvenlik ve ödeme
Sık rastlanan bir tuzak: Docker, -p ile yayımlanan portları UFW'yi atlayarak açar ve güvenlik duvarı kuralları bu portlara uygulanmaz. Yardımcı servisleri 127.0.0.1 adresine bağlayın veya compose'un dahili ağlarını kullanın. Bazı bölgelerde Docker Hub'dan imaj indirmek zaman zaman zorlaşabilir veya hız sınırlarına takılabilir, bu nedenle bir kayıt defteri aynasını önceden yapılandırmak faydalıdır. Her paketin ödeme yöntemleri «Ödeme» sütununda yer alır; fiyatlar sağlayıcıların sitelerindeki verilere göre güncellenir.