Docker bir application platformudur. Uygulamaları container adı verilen ligtweight-isolated çalıştırma birimlerinde çalıştırır. Mesela 10 Sanal makinesi olan bir server 50 containeri rahat çalıştırır. Her bir container de aslında isole edilmiş uygulamalardır. Containerlerde çalışma sistem adminlerine sistemin yönetiminde daha adil olunması ve uygulamalara tutarlı yönetilmesini sağlar.
Docker application developera sunduğu çalışma ortamı ile tutarsızlıklar ortadan kalkar. Sanki bir sanal makinada çalışıyormuş gibi hangi makinede çalışırsa çalışsın aynı image üzerinde çalışıyorsa problemsiz çalışır. Yani bir anlamda aynı çalışma ortamı sunar. Bir anlamda sandbox projeleri oluşturur. Yani farklı projeler arasında ortak resource kullanımından doğan güvenlik ve çatışma problemlerini ortadan kaldırır. Tüm uygulamalar için ortak olan web serverlar, databaseler ve file system gibi kaynaklar tekrar tekrar kurulmasına gerek kalmaz. Uygulama geliştiricilerinin, hangi veri tabanının hangi versiyonuyla hangi web serverin hangi versiyou uyumlu çalışır vs şeklindeki çatışmalarla uğraşmasını engeller.
Tüm bu çözümleri COTAINER mantığı ile geliştirir. Container bir image’in çalışan örneğidir. Image ise bir çalışma ortamını tanımlayan template’dir. İşletim sistem bilgisi, Yazılım bilgisi, uygulama kodu vs. (image = snaphot of a particular system)
Image’ler dockerfile ile tanımlanır. Dockerfile aslında bir text dosyasıdır. Ve deployment vs için yapılacak yönergeleri sırasıyla listeler. Mesela proje dosyanızı docker da şuraya kopyalayın vs gibi. Dockerfile build edilerek image oluşturulur. image run edilerek container yani application oluşturulmuş olur.
Geleneksel web uygulamaları geliştirmelerine göre daha modern bir yaklaşımdır. Bir makinada çalışıyorsa bir program bunun herhangi bir makinede çalışması garantisini verir eğer aynı image altyapısını kullanırsanız. Kolay kurulum, güvenlik ve portability sağlar. En somut örnek verilecek olursa bir web applicaiton için olmassa olmaz olan web server kurmanıza gerek kalmayacak, ya da bir bir database e ihtiyacınız varsa elinizdeki web serverla uyumlu bir database aramanıza gerek kalmayacak. Image mantığı ile bunlar hazır olarak sizin için configure edilecek.
Docker Linux platformlar için geliştirilmiştir ancak .NET platformları içinde çalışması için bazı geeliştirmeler vardır.
Büyük Veri, Paralel İşleme ve Akademisyenlik [Link]
Veri Analitiği & Büyük Veri [Link]