Herkesin dilinde bir süredir Docker kelimesi dolanıyor. Üniversite koridorlarında, teknoloji ekiplerinin karar toplantılarında, yeni mezun olan öğrencilerin tavsiyeler aldığı tecrübeli insanların ağzında bir süredir hep Docker dolanıyor. Bir süredir dolanıyor ama kimse bağıra çağıra söylemiyor bunu. Öğrenmek lazım, araştırmak lazım, kullanmak lazım, tevşik etmek edilmek lazım diyorlar. Diğer yandan da Kubertanes de varmış, Docker gibi başka teknolojiler de varmış deniyor.
Bugün sizlerle Docker konusunda uzun bir yolculuğa çıkacağız ve Docker nedir ve ne değildir sorularına cevaplar arayacağız.
Takvimler 23 Aralık 1947 yi gösterdiğinde, Bell araştırma labaratuarlarında John Bardeen ve Walter Brattain tarafında tarihin en büyük icatlarından birisi gerçekleşti. William Shockley başkanlığındaki bu ekip transistörleri icat ederek o dönemde kullanılan ve neredeyse hesap makinesinden öteye gidemeyen bilgisayarların çalışma yapısında çok büyük değişikliklerin yapılabilmesine olanak sağlamışlardı. Bugün kullanılan bilgisayarların çalışma gücünün arkasındaki işlemcileri ve işlemcilerin yüksek seviyelere gelmesini sağlayan şey transistörün kendisiydi. Transistör ve tarihi hakkında bilgi almak için burayı ziyaret edebilirsiniz.
Transistörler bile yetersizdi..!
1947 yılındaki bu icattan sonra teknoloji dünyası çok büyük bir ivme kazanarak yükselişe geçmiş ve bugünlere kadar gelmiş. Günümüzdeki yüksek işlem kapasiteli bilgisayarların, 1947 öncesindeki dönemle karşılaştırılması bile düşünülmemeli artık çünkü arada çok büyük uçurumlar var. İşlem kapasitelerinin bu kadar artması aynı zamanda o sistemleri kullanan yazılım ve teknoloji sistemlerinin gelişmesine de sebep oldu. Neredeyse her gün yeni bir yazılım teknolojisi duyar olduk çünkü eski işlem güçleri ile bu yazılımların çalışması imkansızdı. Madem bu kadar işlem gücümüz var neden kullanmayalım mantığı ile yola çıkttığımızda hak da vermiyor değilim. Teknolojiler geliştikçe teknoloji üreten şirketler oluştu ve bu şirketler oluştukça teknoloji de gelişti. Her yeni yazılım yeni sistem gereksinimlerine ihtiyaç duydu. Bugün 1TB disk yetiyorken 2 ay sonra 4TB daha eklemek gerekebiliyor artık. İşletim sistemleri, veritabanları, medya dosyaları derken artık sistem kaynağı ayırmak ve buna yatırım yapmak sorun olmaya başlamıştı ki hayatımıza başka teknolojiler girdi.
Sanallaştırma mı, o da ne?
Fiziksel bir bilgisayarımız olduğunu düşünelim. İşlemcisi, diski, ağ kartı, Ram belleği gibi temel bileşenlerden oluşuyor. Bu bilgisayar üzerinde işletim sistemi kurarak kendi web sitemizi yayınlıyor olabiliriz. Bu bilgisayarın işlem gücü artık yeterli gelmediğinde aynı ağ üzerinde yeni fiziksel bir makineye ihtiyaç duyar ve o sistemi de devreye sokarak iş gücünü bölüştürmek için araştırma, geliştirme ve yatırımlar yaparız. Ancak yüzlerce bilgisayar sistemine ihtiyaç duyduğumuz anlarda bu kocaman sistemi yönetmek bir hayli zor olacaktır. O yüzden “Sanallaştırma” teknolojisi bu bölümde hayat kurtarır hale geliyor. Kısaca anlatmak gerekirse, 128 GB belleği, 48 core işlemcisi ve 10TB diski olan kocaman bir bilgisayarınız içindeki tek bir işletim sistemi üzerinde bir sürü küçük yeni bilgisayar oluşturarak elinizdeki kaynağı bu makinelerle paylaşabileceğiniz bir yapı. Bu sefer bilgisayarlarını fiziksel değil sanal olarak var olacak. 1GB bellek vermiş olduğunuz 128 tane bilgisayarınız olabilir demek bu. Muhteşem değil mi?
Aaa Sanallaştırma kötü mü?
Tabi her güzel şey gibi Sanallaştırma teknolojisinin de yetmediği veya iyileştirilmesi gerektiği konular gündeme gelecek teknoloji bu kadar hızlı ilerliyorken. Az önce 128 tane bilgisayar kurabileceğinizden bahsetmiştim. Diyelim ki ilk etapta 10 tane bilgisayara ihtiyacım var. Her bilgisayar kendi üzerinde işletim sistemine ihtiyaç duyacak ve diğer sistemlerini işletim sistemi üzerinde çalışacak. Diyelim ki Windows Server 2016 işletim sistemi kuracaksınız bu 10 bilgisayara da. Hepsine 4GB ram verdik, 1 core işlemci verdik ve 50 GB disk verdik. Peki size bir soru bu 50 GB diskin ortalama kaç GB’lık bölümü sadece kendi yazılımlarınız tarafından kullanılabilir? Yada diğer bir deyiş ile o bilgisayardaki işletim sistemi kaç GB yer kaplayacak sistem üzerinde? 50 GB disk vermiş olmanıza rağmen en fazla 45 GB’ı kullanılır olacak. Bilgisayar başına 5 GB kayıp demek bu. 10 tane bilgisayar için 50 GB 100 bilgisayar için ise 500 GB kayıp demek bu. Bu işin bir de bu işletim sistemlerinin güvenlik ve sistem güncellemeleri var. Bu işleri yapabilmek için uzun süren mesailer harcamak zorunda kalabilirsiniz.
Veee Docker hayatımıza girer
Docker gibi sistemler bu konuda imdadımıza yetişiyorlar. Bir bilgisayar içinde istediğiniz kadar bilgisayar oluşturabiliyorsunuz ama bunların hepsi tek bir işletim sistemi kullanıyor desem ne dersiniz? Docker içerisinde oluşturulan Container isimli bileşenler(sanal bilgisayar gibi düşünebilirsiniz) sadece o bilgisayarda çalıştıracağınız uygulamanız kadar büyük olacak. İçerisinde kullanmadığınız hiç bir şey olmayacağı için boyutları inanılmaz derece de küçük oluyor. Diyelim ki php ile yazmış olduğunuz bir web siteniz var. Sitenizin dosyaları toplamda 1GB olsun. Normalde 1 GB’lık diske ihtiyaç duyduğunuz bir sanal bilgisayar oluşturmak isteseniz 5GB’da işletim sistemi için yer ayırmak gerekecek ancak Docker içerisinde sadece 1GB’lık alana ihtiyacınız olacaktır.
Sonuç olarak Docker bir sanallaştırma teknolojisidir ama bildiğimiz sanallaştırma teknolojilerinden de biraz farklıdır. Konteynerleştirme ismi de verilen çok güzel ve iyi yönetilen sistemleri içerisinde barındıran bir yapıdır. Bana göre en büyük artısı kolay yönetilebilme yeteneğidir. Dağıtık sistemlerin bile bir düzen içerisinde çalışmasını sağlayabilmek gibi yetenekleri kesinlikle göz ardı edilmemeli.
Bu yazıda Docker nedir ve ne değildir sorularına cevaplar bulmaya çalıştık ancak çok daha fazla bilgi edinmek ve bu konuda geniş çaplı bir eğitimi ücretsiz almak isterseniz buradaki sayfayı ziyaret edebilirsiniz.
Docker ile ilgili başka yazılarda görüşmek üzere.
Hepinize konteynerli günler…