Nedir Docker?

dockerKısaca ifade etmek gerekirse sanallaştırma konusunda en temelde olan kaynak kullanımına optimizasyon sağlayan bir araç olarak nitelenebilir. Bunu nasıl yapıyor derseniz; VMWare,VirtualBox vb. gibi araçların çalışma mantığı şöyledir; fiziksel host makinenin kaynaklarını belirtilen ölçülerde kullanarak bir işletim sistemi çalıştırır. İşletim sisteminin de bir yazılım olduğundan belirli ölçülerde memory,cpu vb. kaynağına ihtiyaç duymaktadır. Bu da host makinenin kaynaklarını daha fazla tüketmeye sebep olmakta.

Docker ise şunu diyor; madem amaç ayrıştırılmış kaynaklar üzerinde bir/birkaç uygulamayı yalıtılmış olarak çalışırtırmak ise, bunu ayrıca bir işletim sistemi olmadan da yapabiliriz. Ve dedikleri gibi de yapıyorlar. Docker ile host makine üzerinde uygulamalar birbirlerinden yalıtılmış şekilde çalışabiliyor hale geliyor. Bu sayede uygulamaları yalıtmak, farklı adresler,portlar vermek için ekstra bir işletim sistemi çalıştırmaya gerek kalmıyor. Ve böylece işletim sistemi çalıştırmak için gerekli olan kaynağı amacınıza yönelik kullanabilir hale geliyorsunuz. Aslında buraya kadar olan kısmı daha öncede farklı araçlar ile yapılabiliyordu. Bildiğim Solaris üzerindeki Zone’lar bunu sağlıyordu. Docker’in farkı ise buradan sonra başlıyor. Bu aşamaya kadar yaptığı, bu tarz özellikleri kolay kullanılabilir hale getirmesi.

Docker aslında bir uygulama sanallaştırma aracıdır dersem yanlış olmaz sanırım. Unix/linux sistemler için tasarlanmış, fakat windows üzerinde de kullanabiliyorsunuz. Docker daha önce bu tarz işler için geliştirilen uygulamalar bir araya getirilerek oluşturulmuştur.

Tek yaptığı bu değil tabiki. Başka neler yapabiliyor; sanallaştırmak istediğiniz uygulamalar için configürasyonlar oluşturuyorsunuz(uygulamayı şuradan yükle, bu parametreleri kopyala, şu port ile çalıştır vb.). Bu konfigürasyon dosyalarının build edilmiş haline image deniyor. Image’lar üzerinde değişiklik yapıp değişiklikleri yönetebiliyorsunuz. Bu source versioning aracı olan git’e benziyor. Sonra bu image’ları dockerhub denilen bir repositorye yükleyip herkesin erişip kullanabileceği hale getirebiliyorsunuz. İsterseniz ücretli bir hesap ile dockerhub üzerinde private repolar oluşturabilirsiniz. Oluşturulan bu imajlar her sistemde çalışabilir nitelikte oluyor, bu paket eksik bunun versiyonu farklı gibi sorunları bertaraf ediyor. Geliştirme ortamında çalışan uygulamanın test ve production ortamında da çalışacağını garanti ediyor.

Sonrasında oluşturulan bu imajları container denilen, uygulamaları yalıtabilen sanal ortamlar üzerinde çalıştırıyor. Dockerhub’a yüklediğiniz imajı çalıştırmak için yapmanız gereken docker ortamına pull etmek ve çalıştırmaktır.

Docker için edindiğim izlenimleri yalın bir şekilde paylaşmak istedim 😉 Teknik olarak bu anlattıklarımın nasıl yapıldığına dair ayrıntıları paylaşmaya çalışacağım.