Docker Nedir, Neden Bu Kadar Gürültü Çıkardı?

Docker, uygulama geliştirmek, dağıtmak ve çalıştırmak için geliştirilmiş açık kaynak kodlu bir projedir. Docker geliştiricilerin, uygulamalarını her ortamda hızlı bir şekilde geliştirip test edebilmesini sağlar.

Docker, uygulamalarınızı, geliştirme ortamı ve canlı (production) arasında herhangi bir uyuşmazlık durumuyla karşılaşmadan, yani geliştirme ortamında nasıl çalışıyorsa, canlıda da aynı şekilde çalışacağından emin olarak, herhangi bir ortama veya dile bağlı olmadan mikroservislerden oluşturmanıza olanak sağlayan bir teknolojidir.

Bu teknoloji sayesinde, uygulamanız ile birlikte içinde çalışacağı ortamı, kullandığı kütüphanelerin de paketlemesini yapmış olursunuz. Böylece, containerize ettiğiniz uygulamayı, hangi sunucuya hangi makinaya taşırsanız taşıyın, herhangi bir problem yaşamadan çalıştırabilirsiniz. Hiçbir kurulum yapmanıza gerek kalmaz, çünkü container içerisinde, uygulamanın çalışması için gereken herşey vardır. Makinede docker engine çalıştığı müddetçe, uygulamanız sorunsuz bir şekilde çalışacaktır.

Container teknolojileri, eskiden de kullanmış olduğumuz sanallaştırma teknolojileriyle çok karşılaştırılır. Benzerlikler olmakla birlikte, çok temel farklılıkları vardır.

Yukardaki şemada anlatıldığı gibi vm (virtual machine) sisteminde, her vm kendi sanal işletim sistemini içerisinde bulundurur. Ve bu yapılar, asıl bilgisayarın işletim sistemini hypervisor aracılığıyla kullanır.

Docker ile ilgili şemaya bakacak olursak:

Tüm uygulamalar, aynı işletim sistemi çekirdeğini ortak bir şekilde kullanır. Bu durum kaynak kullanım açısından daha avantajlıdır. Container’lar vm’lere daha az kaynak tüketir, daha hızlı ve performanslı çalışır.

Docker, bir sanallaştırma teknolojisi değildir, uygulama taşıma teknolojisidir. Docker’dan bahsedildiğinde, aklımıza uygulama, daha doğrusu uygulamayı oluşturan servisler gelmelidir.

Container teknolojileri yazılım dünyasında büyük ses getirdi ve uygulama geliştirme süreçlerinde her geçen gün etkileri artmaktadır. Sizlerde eminim container teknolojisini öğrendikçe, her durumda her şey için kullanmak isteyeceksiniz. Microsoft, amazon, google gibi dev şirketler de docker’a desteğini arttırıyor ve kullanımını destekliyorlar.

Şöyle bir senaryoyu düşünelim. Java uygulaması geliştirmek istiyorsunuz ve uygulamanız jre7 ile çalışıyor. Aynı bilgisayarda bir başka uygulama  jre8 ile çalışıyor. Böyle bir durumu Container’lar ile gerçekleştirmek çok kolay.

Belli Başlı Kavramlar

İmaj (İmage)

Container oluşturmak için kullanılan salt okunur şablonlardır. docker build komutu ile oluşturulur. İmajlar başka imajların katmanlı bir şekilde biraraya gelmesiyle oluşur. Docker registry içerisinde tutulur.

Container

Benzetme yapmak gerekirse, imaj Java’da veya C#’daki sınıf kavramına karşılık gelirken, container bu sınıftan oluşturulmuş bir nesneye karşılık gelir. Çalışma zamanı objesi olarak değerlendirilebilir. Container’lar az kaynak tüketir (lightweight), taşınabilir ve içinde uygulamaların çalışabildiği ortamların kapsüllenmiş halidir. Container’lar imajlardan oluşturulur. Uygulamanın çalışması için gereken tüm kütüphane dosyaları bulunur.

Registry

İmajları sakladığımız yerdir. Kendi registry yapımızı oluşturabiliriz ya da Docker’ın kendi registry’si olan DockerHub üzerinde saklayabiliriz.

Registry içerisinde repository denen yapılar vardır. Repository’lerin içerisinde imajların çeşitli sürümleri taglar ile ayrılmış bir şekilde bulunur.

Yorum bırakın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Scroll to Top