Docker'a Giriş: Nedir, Mimari, İş Akışı

Yayınlanan: 2020-04-27

İçindekiler

Sanallaştırmanın Tarihçesi

Bundan çok uzun olmayan bir süre önce, bir hizmet dağıtmak hem yavaş hem de sancılı bir süreçti. Süreç, geliştirme ekibi tarafından kodun yazılmasını ve ardından operasyon ekibi tarafından metal makinelere yerleştirilmesini içeriyordu. Operasyon ekibi, kodun çalışması için dil derleyicileri, kitaplıklar ve yamalar aramak zorunda olduklarından işlerini yarıda keserdi.

Sürecin herhangi bir hatası veya hatası varsa, baştan başlamak zorunda kalacaktı - geliştirme ekibi hataları veya hataları düzeltecek ve operasyon ekibi kodu yeniden dağıtmaya başlayacaktı.

Hipervizörler geliştirildiğinde işler biraz daha iyi oldu. Peki, Hipervizörler nedir? Bunlar, özellikle kullanılmadıklarında düzenli aralıklarla sürekli olarak çalışabilen veya kapatılabilen bir sanal makineler (VM) topluluğudur. Sanal makineler, hataların düzeltilmesi ve kodun dağıtılması sürecini hızlandırarak kesinlikle yardımcı oldu, ancak yine de birkaç sorunu vardı. Docker kapsayıcıları oyunun kurallarını değiştirenler olarak geldi. Sanal makinelerde var olan sorunları bile ele aldılar.

Okuyun: Kubernetes Vs. Docker: Birincil Farklılıklar

Docker nedir?

Tüm dünyadaki geliştiriciler tarafından uygulamaları çalıştırmak, paketlemek ve dağıtmak için kullanılan açık kaynaklı bir platformdur. Docker, uygulamaların ilk adımdan son aşamaya kadar kapsülleme sürecini çok kolay ve verimli hale getirir. Docker'ı daha iyi anlamak için kapsayıcıların ne olduğunu ve nasıl çalıştıklarını anlamanız gerekecek.

Kapsayıcı, yazılımı çalıştırmak için gereken her şeyle birlikte gelen, yazılımın bir parçasının bağımsız, hafif ve yürütülebilir paketinden başka bir şey değildir. Konteynerler hiçbir şekilde platformlara bağımlı değildir. Docker, hem Windows hem de Linux tabanlı makinelerle uyumludur. Ayrıca, ihtiyaç duyulursa Docker'ı sanal bir makinede bile çalıştırabilirsiniz. Docker'ın ulaşmayı hedeflediği temel amaç, geliştiricilerin mikro hizmet uygulamalarını çalıştırmak için dağıtılmış mimariyi kullanmalarına izin vermektir.

Donanımın soyutlanmasını gerçekleştiren sanal makinelerin aksine, Docker bir üst seviyeye çıkar ve işletim sistemi düzeyinde farklı bir kaynak kümesinin soyutlamasını gerçekleştirir. Bu, altyapının ayrılması ve uygulamaların diğerleri arasında taşınabilirliği dahil olmak üzere çeşitli faydalar sağlar. Başka bir deyişle, donanım sunucusunu soyutlamak için kullanılan sanal makinelerin aksine, Docker'ın kapsayıcı tabanlı yaklaşımı, işletim sistemi çekirdeğini soyutlayarak çalışır. Bu, hafif örneklerin daha hızlı oluşturulmasına yol açan sanallaştırmaya harika bir alternatiftir. Docker iki versiyonda mevcuttur:

Kurumsal Sürüm (EE):

Bu sürüm, BT ekipleri ve kurumsal geliştirme için özel olarak tasarlanmıştır. Bu sürüm, uygulamaları geliştirmek, göndermek ve çalıştırmak için kullanılır.

Topluluk Sürümü (CE):

Bu sürüm, kapsayıcı tabanlı uygulamaları keşfeden veya Docker'ı kullanmaya başlayan bireyler ve küçük ekipler tarafından kullanılır.

Okuyun: Tam Yığın Proje Fikirleri ve Konuları

Docker İş Akışı

Bu bölümde Docker Engine ve onun farklı bileşenlerine odaklanacağız. Bu, Docker mimarisine geçmeden önce Docker'ın nasıl çalıştığını daha iyi anlamamıza yardımcı olacaktır. Docker Engine, bu kapsayıcı tabanlı uygulamayı kullanarak çeşitli işlevleri gerçekleştirmek için geliştirmeyi sağlayan güçtür. Uygulamaları oluşturmak, paketlemek, sevk etmek ve çalıştırmak için aşağıda listelenen bileşenleri kullanabilirsiniz.

1. Docker Daemon

Görüntüleri, depolama birimlerini, ağları ve kapsayıcıları yönetmenize yardımcı olmak için sürekli olarak çalışan arka plan işlemidir. Bunları işlemek için her zaman Docker API isteklerini arar.

2. Docker CLI'si

Docker Daemon ile etkileşime giren bir arayüz istemcisidir. Geliştiricilerin kapsayıcı örneklerini yönetme sürecini basitleştirmesine yardımcı olur. Geliştiricilerin diğer benzer uygulamalara kıyasla Docker'ı tercih etmelerinin başlıca nedenlerinden biridir.

3. Docker Motoru Dinlenme API'si

Docker arka plan programı ve uygulamalar arasındaki etkileşimleri kolaylaştırır. Bu API'lere erişmek için genellikle bir HTTP istemcisi gerekir.

Docker Mimarisi

Docker mimarisi, istemci-sunucu tabanlı bir mimaridir. Aşağıda belirtilen üç ana bileşeni vardır:

  1. liman işçisi ana bilgisayarı
  2. liman işçisi istemcisi
  3. liman işçisi kayıt defteri
  4. liman işçisi nesneleri

İlk aşamada, Docker istemcisi, Docker kapsayıcılarını geliştirmeye, çalıştırmaya ve dağıtmaya giden işlerin çoğunu gerçekleştirmekten sorumlu olan arka plan programı ile etkileşime girer.

Docker arka plan programı ve istemci, tek bir sistemde çalışabilir veya geliştirici, yerel bir Docker istemcisine bağlanmak için uzak bir arka plan programı kullanabilir. Rest API, Docker arka plan programı ve istemci arasında iletişim kurmak için kullanılır. Bu, bir ağ arayüzü veya UNIX soketleri üzerinden yapılabilir.

Şimdi Docker mimarisi bileşenlerini ayrıntılı olarak tartışalım.

Ayrıca okuyun: Neden Tam Yığın Geliştirici Olun?

1. Docker Ana Bilgisayarı

Docker arka plan programını çalıştırmaktan bir Docker ana bilgisayarı sorumludur. Docker Daemon, diğerleri arasında docker oluşturma ve docker çalıştırma dahil olmak üzere API isteklerini eğlendirir. Ayrıca görüntüleri, ağları, kapsayıcıları ve diğer Docker nesnelerini de yönetir. Daemon'lar, farklı Docker hizmetlerini yönetmek için birbirleriyle iletişim kurabilir.

2. Docker İstemcisi

Kullanıcıların Docker ile etkileşim kurmak için kullandıkları yöntemden başka bir şey değildir. Docker istemcisi, docker çalıştırması gibi isteklerimizi gönderir ve Docker, Docker daemon'a derlemeler yapar. Docker istemcisinin çok önemli bir özelliği, birkaç arka plan programı ile iletişim kurabilmesidir.

3. Docker Kayıt Defteri

Kayıt defteri, ölçeklenebilir ve durum bilgisi olmayan, sunucu tarafı bir uygulamadır. Yalnızca Docker görüntülerini depolamakla kalmaz, geliştiricilerin bunları dağıtmasına da olanak tanır. Docker bize kendi görüntülerimizi oluşturma esnekliği sağlıyor veya kullanabileceğimiz halka açık kayıtlar var. Bu kayıtlar, diğerleri arasında Docker Cloud ve Docker Hub'ı içerir.

Docker'ın yapılandırması, görüntüleri aramak için her zaman Docker Hub'a ve diğer genel kayıtlara başvuracak şekildedir. Ancak, kendi kayıt defterimizi oluşturma seçeneğimiz var. Docker run ve docker pull komutları yardımıyla kendi kayıtlarımızı kullanarak gerekli görüntüleri çıkarabiliriz. Docker push komutu, gerekli görüntüyü oluşturduğumuz kayıt defterine gönderir.

4. Docker Nesneleri

Docker'ı kullanırken birkaç nesne kullanır ve oluştururuz. Bu nesneler kapsayıcıları, görüntüleri, eklentileri, birimleri, ağları ve diğerlerini içerir.

5. Docker Görselleri

Bir Docker görüntüsü, bize bir kapsayıcı oluşturmak için gereken talimatları sağlayan salt okunur bir şablondan başka bir şey değildir. Birçok durumda, bir görüntünün başka bir görüntüyle bağlantısı vardır. İki görüntüyü birbirinden ayıran şey, eklenen özelleştirme katmanıdır. Başka bir deyişle, bir görüntü, bir kapsayıcının değişmez bir anlık görüntüsü olarak da tanımlanabilir. Görüntüler küçük, hafif ve hızlıdır.

6. Docker Konteynerleri

Docker kapsayıcılarını anlamak için farklı bir yaklaşım izleyelim. Bu nedenle, bir sınıfı temsil etmek için bir görüntü kullanılabiliyorsa, bunun örneği bir kapsayıcı olabilir. Başka bir deyişle, kapsayıcı bir çalışma zamanı nesnesidir. Docker CLI veya API yardımıyla kapsayıcıları oluşturabilir, başlatabilir, taşıyabilir, durdurabilir veya silebiliriz. Konteynerler ayrıca depolamaya eklenebilir ve bir veya birden fazla ağa bağlanabilir. Bir konteynerin mevcut durumuna bağlı olarak yeni bir imaj da oluşturabiliriz.

Çözüm

Artık Docker mimarisinin ve bileşenlerinin ne olduğunu bildiğinize göre, popülaritesindeki artışı anlamak için daha iyi bir konumdasınız. Altyapı yönetimini basitleştirir ve örneklerin daha hızlı, daha hafif ve daha dayanıklı olmasına yardımcı olur.

Tam yığın kodlama hakkında daha fazla bilgi edinmek istiyorsanız, upGrad & IIIT-B'nin çalışan profesyoneller için tasarlanmış ve 500 saatten fazla zorlu eğitim, 9'dan fazla proje ve ödev sunan Tam Yığın Yazılım Geliştirme PG Diplomasına göz atın. IIIT-B Mezunları statüsü, pratik uygulamalı bitirme projeleri ve en iyi firmalarla iş yardımı.

Geleceğin Kariyerine Hazırlanın

SEKTÖRDE GÜVENİLİR ÖĞRENME - SEKTÖR TANINMIŞ SERTİFİKA.
Şimdi Uygula