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 benzerleri gibi çeşitli nedenlere sahip olabilir. Docker bu gibi problemleri çözmeye çalışıyor.

Bir Docker konteynerı, bilgisayarınızın içinde bir bilgisayar olarak görülebilir. Bu sanal bilgisayarla ilgili en havalı şey, arkadaşlarınıza 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 şu konularda 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 makine.
Paylaşılabilirlik: Docker kapsayıcısını (Docker ile nasıl çalışacağını bilen) herkese gönderebilirsiniz.

Yeniden Üretilebilirlik: Java Sanal Makinesi ç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 konteynırın tam özellikleri Dockerfile’de saklanır. Bir kuruluş, 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, başvurunuzu takip etmeyi ve sorunları tespit etmeyi kolaylaştırır.

Yalıtım: Bir kapsayıcıdaki bağımlılıklar ve ya ayarlar, bilgisayarınızdaki veya çalışmakta olan diğer kaplardaki yüklemeleri veya yapılandırmaları etkilemez. Bir uygulamanın her bileşeni için ayrı kaplar 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 Java Developer olarak çalışıyorum. Bildiğim, öğrendiğim, gezip gördüğüm şeyleri buradan paylaşıyorum. Bilgi paylaştıkça çoğalır.

Post A Reply