Docker Nedir? Neden Kullanmalıyım?

Hadoop’ta bir veri analizi üzerinde çalıştığınızı ve kodunuzu bir arkadaşınıza gönderdiğinizi düşünün. Ekip arkadaşınız aynı veri kümesinde tam olarak bu kodu çalıştırır, ancak biraz farklı bir sonuç alır. Bu; farklı bir işletim sistemi, bir Hadoop paketinin farklı bir versiyonu ve benzeri durumlar gibi çeşitli nedenlere sahip olabilir. Docker bu gibi problemleri çözmeye çalışıyor.

Bir Docker konteynerı, bilgisayarınızın içinde bir sanal bilgisayar olarak görülebilir. Bu sanal bilgisayarla ilgili en havalı şey, arkadaşlarınıza olduğu gibi gönderebilmenizdir. Ve bu bilgisayarı başlatıp kodunuzu çalıştırdıklarında yaptığınız gibi aynı sonuçları alacaklar.

Docker’ın gerçekten yaptığı şey, uygulama kodunu altyapı gereksinimlerinden ve ihtiyaçlardan ayırmaktır. Bunu, her bir uygulamayı ‘konteyner‘ adı verilen yalıtılmış bir ortamda çalıştırarak yapar. Bu, geliştiricilerin gerçekte çalışacakları sistem hakkında endişe duymadan, Docker kabında çalışacakları gerçek koda konsantre olabileceği ve DevOps’un Docker koyteynerında doğru programlar kurulur ve dağıtımdan sonra söz konusu sistemlerin bakımının yapılması gereken karmaşık sistemlerin sayısı azaltılır.

Kısacası, Docker kullanmalısınız çünkü işletim sisteminden başlayarak Hadoop paket sürümleri gibi ayrıntılara kadar bağımlılıklara izin verir.
Analizlerinizin tekrarlanabilir olmasını sağlar.

Docker’ın yardımcı olduğu birkaç başka nokta var:

Taşınabilirlik: Bir Docker image’i başka bir makineye kolayca gönderilebildiğinden, her şeyi kendi bilgisayarınıza kurabilir ve ardından analizleri yapabilirsiniz. Örneğin daha güçlü bir makinede.
Paylaşılabilirlik: Docker kapsayıcısını (Docker ile nasıl çalışacağını bilen) herkese gönderebilirsiniz.

Yeniden Üretilebilirlik: Java Virtual Machine çalıştırabilen herhangi bir cihazda tam olarak aynı şekilde çalışacak olan bir Java uygulamasına benzer şekilde bir Docker konteyner’ının, Docker çalıştırabilen herhangi bir sistemde aynı olması garanti edilir. Bir konteynerın tam özellikleri Dockerfile’de saklanır. Bir şirket ya da kurum, bu dosyayı ekip üyeleri arasında dağıtarak, aynı Dockerfile’den oluşturulan tüm görüntülerin aynı şekilde çalışacağını garanti edebilir. Ek olarak, sürekli ve iyi belgelenmiş bir ortama sahip olmak, işinizi takip etmeyi ve sorunları tespit etmeyi kolaylaştırır.

Yalıtım: Bir kapsayıcıdaki bağımlılıklar veya ayarlar bilgisayarınızdaki veya çalışmakta olan diğer konteynerlardaki yüklemeleri veya yapılandırmaları etkilemez. Bir uygulamanın her bileşeni için ayrı konteynerlar kullanarak (örneğin bir web sunucusu, ön uç ve bir web sitesini barındırmak için veritabanı), birbiriyle çelişen bağımlılıklardan kaçınabilirsiniz. Sisteminizde çakışmalar hakkında endişe duymadan tek bir sunucuda birden fazla proje yapabilirsiniz.

Güvenlik: Önemli uyarılarla, büyük bir uygulamanın farklı bileşenlerini farklı kaplara ayırmanın güvenlik yararları olabilir: eğer bir kapsayıcı tehlike altındaysa diğerleri etkilenmez.

Docker Hub: LAMP yığını gibi yaygın veya basit kullanım durumlarında, görüntüleri kaydetme ve Docker Hub’a itme özelliği, hali hazırda bakımlı çok sayıda image’in mevcut olduğu anlamına gelir. Hazırlanmış bir image’i hızlıca çekebilmek ve ya resmi olarak bakımı yapılan bir Dockerfile’dan derlemek bu tür bir kurulum işlemini son derece hızlı ve basit hale getirebilir.

Çevre Yönetimi: Docker, nginx kullanan bir web sitesinin farklı sürümlerini korumayı kolaylaştırır.

Sürekli Entegrasyon: Docker; Travis, Jenkins ve Wercker gibi araçlarla sürekli entegrasyon pipelinenın bir parçası olarak iyi çalışır. Kaynak kodunuz her gün güncelleştirildiğinde, bu araçlar yeni sürümü Docker image olarak kaydedebilir, sürüm numarasıyla etiketleyebilir ve Docker Hub’a itebilir, ardından üretime dağıtabilir.


About This Author

WittyCommerce şirketinde SAP Hybris Developer olarak çalışıyorum. Bildiğim, öğrendiğim, gezip gördüğüm şeyleri buradan paylaşıyorum çünkü bilgi paylaştıkça çoğalır.

Post A Reply