
Konteyner teknolojisi, uygulamayı çalıştığı ortamla birlikte paketleyerek "bende çalışıyordu" sorununu ortadan kaldırır. Kendi sanal sunucunuz varsa bu teknolojiyi kullanmak için ek bir platforma ihtiyacınız yok — kurulum birkaç komutluk iş ve karşılığında dağıtım süreçleriniz baştan aşağı değişiyor.
Bu rehber, konteynerlerin ne zaman anlamlı olduğunu, kaynak planlamasını ve üretim ortamında dikkat edilmesi gerekenleri anlatıyor.
Konteyner Ne Sorunu Çözer?
- Ortam tutarlılığı: Uygulama, bağımlılıklarıyla birlikte tek bir imajda paketlenir. Yerel makinenizde çalışan imaj, sunucuda birebir aynı şekilde çalışır.
- İzolasyon: İki farklı uygulamanız farklı sürümlere ihtiyaç duyuyorsa, her biri kendi konteynerinde kendi sürümüyle çalışır. Sunucuya çakışan paketler kurmak zorunda kalmazsınız.
- Hızlı geri alma: Yeni sürüm sorun çıkarırsa önceki imaja dönmek saniyeler sürer. Klasik dağıtımda bu, dosyaları geri yüklemek ve bağımlılıkları düşürmek demektir.
- Tekrarlanabilir kurulum: Sunucu yapılandırması bir dosyada tanımlıdır. Sunucuyu sıfırlasanız bile aynı ortamı dakikalar içinde yeniden kurarsınız.
Ne Zaman Gerekmez?
Konteyner her senaryo için doğru araç değildir. Tek bir içerik yönetim sistemi çalıştıran, nadiren güncellenen bir sitede ek bir soyutlama katmanı getirir ve karşılığını vermez. Konteynerin değeri, birden fazla servisiniz olduğunda veya düzenli dağıtım yaptığınızda ortaya çıkar.
Kaynak Planlaması
Konteynerler sanal makinelerden hafiftir çünkü ana sistemin çekirdeğini paylaşırlar — her konteyner ayrı bir işletim sistemi yüklemez. Yine de kaynak tüketirler ve planlama gerekir.
| Kaynak | Dikkat edilecek |
|---|---|
| Bellek | Her konteynere bellek sınırı tanımlayın; sınırsız bırakılan tek konteyner tüm sunucuyu tüketebilir |
| CPU | Paylaşılabilir, ancak kritik servise öncelik verin |
| Disk | Kullanılmayan imajlar ve katmanlar hızla birikir; düzenli temizlik şart |
| Ağ | Yalnızca dışarı açılması gereken portları yayınlayın |
Disk satırı özellikle önemlidir: konteyner kullanan sunucularda "disk doldu" hatalarının en yaygın nedeni, eski imajların ve kullanılmayan katmanların birikmesidir. Düzenli temizliği zamanlanmış bir göreve bağlayın.
Kalıcı Veri: En Kritik Konu
Konteynerler tasarım gereği geçicidir — silinip yeniden oluşturulduklarında içlerindeki değişiklikler kaybolur. Bu, konteyner mantığının temeli olduğu kadar en sık yapılan hatanın da kaynağıdır.
Kalıcı olması gereken hiçbir veri konteynerin içinde tutulmamalıdır. Veritabanı dosyaları, kullanıcı yüklemeleri ve yapılandırma dosyaları konteyner dışında, ana sistemde saklanmalı ve konteynere bağlanmalıdır. Bu ayrım kurulmadan yapılan bir güncelleme, veritabanınızı silmekle sonuçlanabilir.
Üretim Ortamı İçin Dört Kural
1. İmaj Sürümlerini Sabitleyin
"En son" etiketli bir imaj kullanmak, her yeniden başlatmada farklı bir sürüm çekme riski taşır. Üretimde imaj sürümünü açıkça belirtin; yükseltmeyi bilinçli bir karar olarak yapın.
2. Konteynerleri Root Olarak Çalıştırmayın
Varsayılan yapılandırmada birçok imaj yönetici yetkisiyle çalışır. Konteyner izolasyonu güçlüdür ama aşılmaz değildir; uygulamayı yetkisiz bir kullanıcıyla çalıştırmak ek bir savunma katmanı ekler.
3. Sağlık Kontrolü Tanımlayın
Bir konteynerin çalışıyor olması, içindeki uygulamanın yanıt verdiği anlamına gelmez. Sağlık kontrolü tanımlayın ki takılan bir servis otomatik olarak yeniden başlatılsın.
4. Logları Dışarı Aktarın
Konteyner silindiğinde içindeki loglar da gider. Logları ana sisteme veya merkezi bir toplayıcıya yönlendirin — sorun araştırırken en çok ihtiyaç duyacağınız şey, artık var olmayan bir konteynerin loglarıdır.
Ters Vekil (Reverse Proxy) Katmanı
Birden fazla konteyner servisini tek bir sunucuda yayınlarken hepsini doğrudan dışarı açmak yerine önlerine bir ters vekil koyun. Bu katman SSL sonlandırmasını üstlenir, alan adına göre yönlendirme yapar ve tek bir noktadan erişim kontrolü sağlar.
Böylece konteynerlerinizin hiçbiri doğrudan internete bakmaz; yalnızca vekil sunucu bakar. Kaynakların size ayrıldığı bir VDS sunucu üzerinde bu mimari, tek makinede çok sayıda servisi güvenli biçimde barındırmanın standart yoludur.
Yedekleme Neyi Kapsamalı?
Konteyner kullanan bir sunucuda yedekleme kapsamı değişir:
- Kalıcı veri hacimleri — asıl yedeklenmesi gereken budur
- Yapılandırma dosyaları — servis tanımları ve ortam değişkenleri
- Özel imajlarınız — kendi yazdığınız uygulamaların imajları
Konteynerlerin kendisini yedeklemenize gerek yoktur; yapılandırmadan yeniden oluşturulabilirler. Bu, yedekleme boyutunu belirgin biçimde küçültür.
Sonuç
Konteyner teknolojisi, birden fazla servis çalıştıran veya düzenli dağıtım yapan bir sanal özel sunucu sahibi için dağıtım süreçlerini kökten basitleştirir. Ancak tek bir statik site için gereksiz bir katmandır. Kullanmaya karar verirseniz iki kuralı baştan kurun: kalıcı veriyi konteyner dışında tutun ve imaj sürümlerini sabitleyin. Bu ikisi atlandığında konteynerler kolaylık değil, veri kaybı riski üretir.
Sıkça Sorulan Sorular (SSS)
Konteyner ile sanal makine arasındaki fark nedir?
Sanal makine kendi işletim sistemi çekirdeğini çalıştırır ve tam izolasyon sağlar. Konteyner ana sistemin çekirdeğini paylaşır; çok daha hafiftir ve saniyeler içinde başlar ama izolasyonu görece zayıftır. Farklı işletim sistemleri çalıştırmanız gerekiyorsa sanal makine, aynı sistemde çok sayıda servis çalıştıracaksanız konteyner uygundur.
Sunucumda kaç konteyner çalıştırabilirim?
Sınırı konteyner sayısı değil, toplam kaynak tüketimi belirler. Her konteynere bellek sınırı tanımlayıp toplamın fiziksel belleği aşmadığından emin olun. Boşta duran konteynerler neredeyse hiç kaynak tüketmez.
Veritabanını da konteynerde çalıştırmalı mıyım?
Çalıştırabilirsiniz ama veri dosyaları mutlaka konteyner dışında, kalıcı bir hacimde durmalıdır. Yüksek yazma yüklü veritabanlarında ek disk katmanının performans etkisini ölçün; bazı durumlarda veritabanını doğrudan ana sistemde çalıştırmak daha verimlidir.
Disk sürekli doluyor, neden?
Neredeyse kesinlikle kullanılmayan imajlar, durmuş konteynerler ve eski katmanlar birikiyordur. Düzenli temizlik komutunu zamanlanmış bir göreve bağlayın; bu, konteyner kullanan sunucularda standart bir bakım işidir.