Docker Nedir?
Merhaba,
Docker Nedir? isimli bu yazımda sizlere docker hakkında bilgiler vereceğim. Docker oldukça fazla duyduğumuz bir teknoloji. Bu yazımda sizlere bunun detayları hakkında bilgiler vereceğim. Daha sonrasında docker kurulumu ve uygulamaları hakkında makaleler yayınlayacağım.
Container teknolojileri VMware vSphere 7 ile birlikte artmaya başladı. Bu alandaki yenilikler için aşağıdaki linki inceleyebilirsiniz.
https://www.tayfundeger.com/kat/vmware
Docker Nedir?
Docker, uygulamaları geliştirmek, göndermek ve çalıştırmak için kullanılan bir yazılım platformdur. Docker, yazılımlarınızı hızlı bir şekilde teslim edebilmeniz için uygulamalarınızı altyapınızdan ayırmanıza olanak tanır. Docker ile, altyapınızı uygulamalarınızı yönettiğiniz şekilde yönetebilirsiniz. Docker’in kodu hızlı bir şekilde gönderme, test etme ve dağıtma yöntemlerinden yararlanarak, kod yazma ve üretimde çalıştırma arasındaki gecikmeyi önemli ölçüde azaltabilirsiniz.
Docker , Docker Inc tarafından geliştirilen ücretsiz bir yazılımdır. 13 Mart 2013 tarihinde halka sunuldu ve o günden bu yana development dünyasında bir zorunluluk haline geldi.
Kullanıcıların uygulamalarını başlatmak ve dağıtmak için bağımsız ve izole edilmiş ortamlar oluşturmalarına olanak tanır. Bu ortamlar daha sonra container olarak adlandırılır. Bu, developer’ın herhangi bir makinede bir container çalıştırmasına izin verecektir. Gördüğünüz gibi Docker ile bağımlılık ya da derleme problemleri kalmadı. Tek yapmanız gereken container’i başlatmak ve bunun sonucunda da uygulamanız hemen başlatılacaktır. Gelelim en çok sorulan soruya.
Docker bir Virtual Machine midir?
Bu çok kapsamlı bir soru aslında. Buna doğrudan evet veya hayır demek çok doğru olmaz. Ben en iyisi anlatayım. Docker, işletim sistemi üzerinde çalışan bir yazılım. Siz docker’i isterseniz bare metal yani sanal olmayan ortamlara kurabilir, isterseniz de bir hypervisor üzerine kurabilirsiniz. Örneğin, ESXi, Hyper-V vs vs. Docker, Windows, MACOSx ve Linux üzerine kurulabilir. Docker çoğu zaman bir virtual machnie olarak düşünülür ancak işlevsellikleri aynı değildir. Virtual macine, Guest OS ve Application’dan oluşur. Her virtual machine’in kendine özgü sanal donanımı vardır. Sanallaştırma ve sanal makineler yani virtual machine’ler ile ilgili aşağıdaki Study Guide’i hazırlamıştım. Bunu inceleyebilirsiniz.
Docker mimarisinde ise, bir işletim sistemi üzerine docker yazılımı kurulur ve bunun üzerinde container’lar oluşturulur. Siz docker’i isterseniz bir hypervisor üzerinde konumlandırabilirsiniz. Bir virtual machine oluşturup bunun içine Linux veya Windows işletim sistemini kurup bunun üzerinde docker’ı çalıştırabilirsiniz. Böylece docker üzerine birden fazla uygulama çalıştırabilirsiniz.
Container peki Docker’in neresinde? Container aslında Docker organizasyon birimleridir. Bir ımage oluşturup çalıştırmaya başladığımızda bir container üzerinde gerçekleştiriyoruz bu işlemi. Container diye adlandırılmasının sebebi ise çalıştırdığımız yazılımın taşınabilirliği nedeniyle kullanılır. Başka bir deyişle, yazılımı “gönderebilir”, değiştirebilir, yönetebilir, oluşturabilir veya kurtulabilir, yok edebiliriz, tıpkı kargo gemilerinin gerçek konteynerlerle yapabileceği gibi 🙂 Çok iyi bir benzerme değil mi 🙂
Sizler Docker’i isterseniz bare metal yani sanal olmayan altyapılarda çalıştırabilir, isterseniz de VMware, Hyper-V gibi hypervisor’ler üzerinde çalıştırabilirsiniz. Yukarıdaki mimaride Sanallaştırma ile Docker arasındaki mimari aslında karşılaştırılmış. Sanallaştırma mimarisinde her bir application için ayrı bir virtual machine oluştururken, Docker üzerinde birden fazla uygulamayı kullanabilir ve dağıtabilirsiniz.
Docker , aynı host üzerinde birden çok İşletim sisteminin çalışmasını sağlamak için Sanallaştırma için kullanılan yazılımıdır. Virtual machine oluşturmak için kullanılan Hypervisor’lerin yani ESXi oluyor bu, aksine, Docker’da bu işlem system-level seviyesinde gerçekleşiyor. Aşağıdaki görüntüdeki farkı görebileceğiniz gibi, Docker container, hypervisor üzerinde ve İşletim sisteminin üstünde çalışır. Bu, verimliliği artırmanıza yardımcı olur. Ayrıca, aynı altyapı üzerinde birden fazla virtual machine çalıştırabileceğimizden daha fazla container çalıştırabiliriz çünkü container’ler daha az kaynak tüketir.
Özet ile Docker kullandğımızda, Docker üzerinde application yani uygulamalarımı test edebiliyoruz. Eğer bu işlemi docker olmadan yapmak istersek her bir uygulama için çoğu zaman bir virtual machine kurmamız gerekiyordu ki bu da ciddi anlamda kaynak kullanıma sebep oluyor. Docker mimarisi gereği çok daha az kaynak tükettiği için işlemlerimizi hızlı bir şekilde halledebiliyor.
Docker gerçekten hayatımızı değiştirebilir. Docker’i kullandığımızda sağlayacağı faydalardan kısaca bahsetmek istiyorum.
- Docker oldukça hızlıdır. Bir virtual machine’den farklı olarak uygulamalarını saniyeler içinde başlatabilirsiniz.
- Docker çok platformlu bir yapıya sahiptir. İşletim sistemi bağımsız, Container’ları herhangi bir sistemde başlatabilirsiniz.
- Container’ları çok hızlı bir şekilde oluşturabilir ve yine çok hızlı bir şekilde silebilirsiniz.
- Virtual machine ile karşılaştırdığınızda işletim sistemi kurma gibi işlemler ile uğraşmazsınız.
- Docker’ı yapılandırdıktan sonra, şirketinize yeni bir çalışan katıldığında tekrar yapılandırmanız veya reinstall yapmanıza gerek kalmaz.
- Projelerinizi canlıya almak oldukça basit olacaktır.
Docker hakkında detaylı bilgi verdim. Öncelikle şunu belirtmem gerekiyor ki, Docker ağırlıklı olarak bir hypervisor üzerinde çalışıyor ve bare-metal yani sanallaştırma olmayan ortamlarda kullanımı çok daha az. Bundan dolayı Docker’i konumlandırırken mutlaka bir hypervisor yani ESXi gibi, Hyper-V gibi sanallaştırma sistemlerinde konumlandırma dikkat edin. Bazı kullanıcılar docker’in sanallaştırmanın yerini alacağını ve sanallaştırma kullanılmaması gerektiğini düşünüyor ancak böyle bir durum söz konusu değil. Fiziksel sunucu üzerindeki kaynakların daha efektif bir şekilde kullanılabilmek için her zaman için sanallaştırma yapılmasına gerek vardır. Docker teknolojisi burada bize sanallaştırma katmanında aslında bir virtual machine konsolidasyonu sağlıyor. Yani uygulamalarınızı birden fazla virtual machine üzerinde tutmak yerine docker container üzerinde tutmanıza olanak sağlıyor. Örneğin 8 adet uygulama geliştirmek, test etmek istediğinizde 8 ayrı virtual machine kulanmak yerine belki tek bir docker virtual machine’i üzerinde bu işlemlerinizi halledebileceksiniz. Rakamlar ve örneklerin çalıştırdığınız uygulamaya göre değişkenlik gösterdiğini unutmayın, ben sadece örnek veriyorum 🙂
Umarım faydalı olmuştur.
İyi çalışmalar.
Çok anlaşılır olmuş 🙂 teşekkürler
Çok teşekkürler Sercan 🙂
Anlatım harika çok teşekkürler
Rica ederim 🙂