Docker Mimarisine Genel Bakış ve Docker Bileşenleri [Yeni Başlayanlar İçin]

Yayınlanan: 2020-12-31

Yakın zamanda kapsayıcı dünyasıyla karşılaştıysanız, kapsayıcılaştırma avantajları sunmak için birlikte çalışan temel öğeleri anlamak muhtemelen kötü bir fikir değildir. Ama ondan önce, sorabileceğiniz bir soru var. Konteynerler hangi sorunu çözer?

Tipik bir geliştirme yaşam döngüsünde bir uygulama oluşturduktan sonra geliştirici, test amacıyla test cihazına gönderir. Ancak geliştirme ve test ortamları farklı olduğu için kod çalışmaz.

Şimdi, ağırlıklı olarak bunun iki çözümü var - ya bir Sanal Makine ya da Docker gibi kapsayıcı bir ortam kullanırsınız. Eski güzel zamanlarda, kuruluşlar birden çok uygulamayı çalıştırmak için VM'leri dağıtırdı.

Peki neden sanal makineler üzerinden konteynerleştirmeyi benimsemeye başladılar? Bu yazıda, bu tür tüm soruların ayrıntılı açıklamalarını sunacağız.

Bu harika aracın arkasında, aynı derecede iyi düşünülmüş bir mimari olmalı. Docker mimarisi bileşenlerini bilmeden önce, Docker kapsayıcılarını ve bunların VM'lerden nasıl üstün olduklarını anlayalım.

İçindekiler

Docker Konteynerleri

Docker, kapsayıcı adı verilen gevşek bir şekilde yalıtılmış ve kapsayıcı ortamlarda uygulamalar oluşturma, paketleme ve çalıştırma yeteneği sağlayan açık kaynaklı bir projedir.

Docker platformunun sağladığı tüm izolasyon ve güvenlikle, belirli bir ana bilgisayar üzerinde aynı anda birçok kapsayıcı çalıştırmanıza olanak tanır.

Docker Konteynerlerinin Yaygın Olarak Kabul Edilmesinin Nedenleri

  • Geliştiricilerin yerel olarak kod yazmasına ve çalışmaları Containers kullanarak ekipleriyle paylaşmasına olanak tanır.
  • Uygulamalarını konteynerler olan test ortamlarına itebilir ve otomatik testler yürütebilirler.
  • Hatalar bulunduğunda, geliştirme ortamında düzeltilebilir ve ardından yeniden dağıtılabilir.
  • Bir düzeltme almak, güncellenmiş bir görüntüyü üretim ortamına göndermek kadar basittir.

Konuya derinlemesine dalmadan önce, geleneksel sanallaştırma uygulamalarını yeni nesil konteynerleştirmeden ayırt etmeliyiz.

Sanal Makineler ve Docker Konteynerleri

DevOps uygulamalarımız için kapsayıcıyı kullanmadan önce Sanal Makineler en üst düzeydeydi. Her uygulama için VM'ler oluştururduk.

VM'ler hemen hemen tüm gereksinimleri karşılarken, VM'leri kullanmanın olumsuz tarafı hantaldı ve gerekli tüm bellek ve donanım kaynaklarını temeldeki ana makinelerden tahsis etti.

Bununla birlikte, kapsayıcılar işletim sistemi düzeyinde sanallaştırma sağladığı ve genellikle daha az bellek gerektirdiği için kapsayıcılaştırma ile kolayca önlendi. Böylece popüler oldu ve sonunda DevOps topluluğu tarafından benimsendi.

Görüntü Kaynağı

Yukarıdaki şema, VM'lerin ve Container'ların mimarilerinin nasıl farklılık gösterdiğini ve Container'ların neden günlük geliştirme süreçleri için VM'leri geride bıraktığını açıklamaktadır. VM'lerden farklı olarak, Konteynerler, işletim sistemi düzeyinde Sanallaştırma sağlamak için Konteyner Motorlarının üstüne oturur ve böylece birçok kaynaktan tasarruf sağlar.

liman işçisi motoru

Docker'ın farklı mimari bileşenlerini tartışmadan önce Docker'ın iş akışını anlamak çok önemlidir. Bize Docker sisteminin nasıl çalıştığı hakkında bir fikir verecek olan Docker Engine'e ve onun çeşitli bölümlerine bir göz atalım. Docker Engine, öncelikle üç ana bileşene sahip tipik bir istemci-sunucu uygulamasıdır.

Sunucu (Arka Plan Programı)

Docker arka plan programı, arka planda çalışan ve tüm Docker nesnelerini yöneten sürekli bir süreçtir. İstemci tarafından öne sürülen Docker API isteklerini dinler ve sürekli olarak işler.

Dinlenme API'si

Docker istemcilerinin Docker arka plan programı ile etkileşim kurmak için kullandığı arabirimdir. İstemciler, API aracılığıyla arka plan programıyla konuşabilir ve ona talimatlar sağlayabilir.

Müşteri

Docker İstemcisi, arka plan programı ile etkileşime girebilen bir Komut Satırı Arabirimidir (CLI). Tüm konteyner yönetimi sürecini basitleştirir.

Görüntü Kaynağı

Docker İstemcisi (CLI gibi bir HTTP istemcisi olabilir), kapsayıcı oluşturma, çalıştırma ve paylaşma gibi ağır bir görevi yerine getiren arka plan programıyla konuşur. İstemci ve arka plan programı aynı makinede çalışabilir veya bir istemciyi uzak bir arka plan programına bağlayabilir. İstemci ve arka plan programı, yuvalar veya ağ arabirimi üzerinden bir Rest API kullanarak birbirleriyle iletişim kurar. Docker İstemcisi, kullanıcıların kapsayıcılar, görüntüler, birimler vb. Docker nesnelerini yönetmesine yardımcı olur. Docker Projeleri hakkında daha fazla bilgi edinin

Dünyanın En İyi Üniversitelerinden Yazılım Geliştirme Kurslarına Kaydolun . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.

Mimari Bileşenler

Daha önce tartışıldığı gibi Docker, İstemcinin bir Rest API üzerinden arka plan programıyla konuştuğu bir İstemci-Sunucu mimarisini kullanır. Docker mimarisi, aşağıda tartışıldığı gibi birkaç bileşenden oluşur.

Görüntü Kaynağı

arka plan programı

İstemciler tarafından başlatılan API isteklerini dinler ve kapsayıcılar, görüntüler, birimler ve ağlar dahil olmak üzere Docker nesnelerini yönetir. Ayrıca, özellikle büyük Docker ağlarını yönetmek için Docker hizmetlerini yönetmek için diğer daemon'larla iletişim kurabilir.

Müşteri

Docker kullanıcıları, Docker Client'ı kullanarak arka plan programı ile iletişim kurabilir. Kullanıcılar, CLI gibi bir istemci kullanarak "Docker run ..." gibi komutları yürütür ve bu komutlar daha sonra bu komutları Docker'a (arka plan programı) iletir ve sonunda bunları gerçekleştirir. Docker istemcisi birden çok arka plan programıyla iletişim kurar.

Kayıtlar

Docker Görüntülerini saklar ve genel veya özel olabilir. Docker, Docker Hub'da varsayılan olarak Görüntüleri arayacak şekilde yapılandırılmıştır. İstemci bir çekme veya çalıştırma komutu verdiğinde, görüntüler depolardan çekilir.

Docker Nesneleri

Docker ile çalışırken kapsayıcılar, görüntüler, hacimler, ağlar vb. gibi çeşitli nesnelerle etkileşime gireriz.

Bu nesnelerden bazıları

Görüntüler

Salt okunur bir şablondur ve kapsayıcı oluşturmaya yönelik yönergeler içerir. Ayrıca kapsayıcı özelliklerini açıklayan meta verileri de içerir. Kullanıcılar, Docker kayıt defterinden görüntüleri çekebilir ve uygulamalarının gereksinimlerine uyacak şekilde özelleştirilmiş görüntüler oluşturmak için bunların üzerine yazılabilir görüntü katmanları oluşturabilir. Bazı popüler fikirler arasında Ubuntu, Nginx, MySQL, vb. sayılabilir. Bu fikirler, ekipler arasında paylaşılarak bir uygulama üzerinde işbirliği içinde çalışmalarına yardımcı olur.

Konteynerler

Kapsayıcılar, uygulamalar için yalıtılmış ortamlar sağlayan görüntülerin örnekleridir. Yalnızca onları oluşturmak için kullanılan görüntüler tarafından tanımlanan kaynaklara erişimleri vardır.

Docker Networks, aynı ağdaki izole kapların iletişim kurmasına ve kaynakları paylaşmasına izin verir. Docker tarafından sağlanan bazı ağlar arasında köprü, ana bilgisayar, yer paylaşımı, Macvlan vb.

Depolamak

Docker, sürücülerin yardımıyla verileri yazılabilir kapsayıcı katmanında saklamanıza olanak tanır. Docker, kalıcı depolama için dört seçeneğe izin verir: Docker Birimleri, Birim Kapsayıcıları, Dizin Bağlantıları ve Depolama Eklentileri.

En yaygın kullanılan depolama seçeneği birimlerdir. Ana bilgisayar dosya sistemine yerleştirilirler ve birkaç kapsayıcının bu birimler içinde veri paylaşmasına ve yazmasına izin verir.

Çözüm

Docker, kullanıcılarına verimli konteynerleştirme hizmetleri sağlamak için bir dizi temel en son teknolojiyi kullanır. Şüphesiz, Docker son yıllarda geliştirici topluluğu arasında ilgi görmeye başladı ve önümüzdeki yıllarda da bunu yapmaya devam edecek.

Kaynak verimliliği, ölçeklenebilirlik vb. gibi konteynerlerin sağladığı çok çeşitli avantajlar nedeniyle, güverte üzerindeki konumunu haklı olarak korur.

Bu makalede, Docker iş akışı, mimarisi ve altında yatan teknolojiler gibi Docker'ın en temel kavramlarından bazılarını, kapsayıcılar, görüntüler, kayıtlar, ağlar vb. gibi çeşitli Docker nesnelerini tartıştık.

Artık Docker Containers'ın güzel dünyasının derinliklerine dalmak için doğru yoldasınız. Artık farklı Docker kaynaklarının, uygulamalarınızı sorunsuz bir şekilde oluşturmanıza, dağıtmanıza ve paylaşmanıza olanak sağlayacak bir dizi özellik sağlamak için birlikte nasıl çalıştığını daha iyi anlamalısınız.

upGrad ile Docker Mimarisini Öğrenin

upGrad ile uygulama geliştirme yolculuğunuza daha hızlı başlayın.

upGrad Eğitim Pvt. Ltd., adayları büyük BT devlerine kapılmaya hazır hale getiren DevOps'ta yazılım geliştirme uzmanlığı konusunda özel bir kurs sunuyor.

Kursta Öne Çıkanlar

upGrad'ın Büyük Veride Yazılım Geliştirme Uzmanlığı alanında Yönetici PG Programı, 12 aya ayrılmış, özenle tasarlanmış bir çevrimiçi kurstur.

Bu müfredatta,

  • Veri Bilimi ve Makine Öğrenimi içeriğine özel erişim elde edin
  • Canlı projeler ve ödevler üzerinde çalışın
  • 360 derece kariyer desteği kazanın
  • On programlama dili ve aracı öğrenin
  • Özel öğrenci danışmanlığı alın

upGrad ile kendinizi DevOps uygulama geliştirmeye hazır hale getirin.

Neden beklemek

Bugün başvur!

Geleceğin Kariyerine Hazırlanın

Yazılım Mühendisliği Yüksek Lisans Programına Hemen Başvur