DOCKER NEDİR? NASIL ÇALIŞIR?

Docker Eğitimi için tıklayınız.

"DOCKER" sözcüğü birkaç şeyi birden ifade eder; bu açık kaynak topluluk projesi, açık kaynak projesinden olan Docker Inc. bu projenin ana destekçisi olan şirket ve şirketin resmi olarak desteklediği araçları içerir. Teknolojilerin ve şirketin aynı adı paylaşması kafa karıştırıcı olabilir.

İşte size hızlı bir açıklama:

  1. Bir IT yazılımı olan "Docker", Linux® kapsayıcılarının oluşturulmasını ve kullanılmasını sağlayan konteynerizasyon teknolojisidir.
  2. Açık kaynak Docker topluluğu, tüm kullanıcılarına serbest bir şekilde fayda sağlayabilmesi için bu teknolojileri geliştirmeye çalışır.
  3. Şirket, Docker Inc., Docker topluluğunun çalışmalarına dayanır, sistemi daha güvenli hale getirerek bu gelişmeleri daha büyük bir toplulukla yeniden paylaşır. Daha sonra kurumsal müşteriler için gelişmiş ve sağlamlaştırılmış teknolojileri destekler.

DOCKER ile kapsayıcılara son derece hafif, modüler sanal makineler gibi davranabilirsiniz. Ayrıca bu kapsayıcılarla cloud için uygulamalarınızı en uygun hale getirebilir, ortamdan çevreye uyarlayabilir, dağıtabilir, kopyalayabilir veya taşıyarak esneklik kazanabilirsiniz. 

 [Linux'u Anlamak yazımızı okumak için tıklayın.]

DOCKER NASIL ÇALIŞIR?

Docker teknolojisi, bağımsız olarak çalışmak amacıyla işlemleri ayrıştırmak için Cgroups ve namespaces gibi Linux çekirdeği ve Linux çekirdeğinin özelliklerini kullanır. Bu serbestlik, kapsayıcıların çoklu süreçleri yönetme kabiliyeti ve altyapınızı daha iyi kullanabilmeniz için uygulamaları birbirinden ayrı olarak ayrı sistemlerle koruyacaktır. 

Docker dâhil olmak üzere kapsayıcı araçlar, görüntü tabanlı bir dağıtım modeli sunar. Bu bir uygulamayı veya hizmet kümesini birden çok ortamdaki tüm bağlayıcıları ile paylaşmayı kolaylaştırır. Ayrıca Docker, bu kapsayıcı ortamı içinde uygulamayı (veya bir uygulamayı oluşturan işlemlerin bir araya getirilmiş kümelerini) dağıtmayı da otomatikleştirir.

Docker'ı kullanıcı dostu ve benzersiz kılan Linux kapsayıcılarının üzerine inşa edilen bu araçlar; kullanıcılara, uygulamalara benzersiz erişim, hızlı bir şekilde dağıtım yapma,  sürümleri ve sürüm dağılımını kontrol etme olanağı tanır.

 

Docker Teknolojisi, Geleneksel Linux Kapsayıcılarıyla Aynı Mı?

Hayır. Docker teknolojisi başlangıçta LXC teknolojisinin üzerine inşa edilmişti — çoğu insan “geleneksel” Linux kapsayıcılarıyla ilişkilendiriyordu - o zamandan beri bu bağlılıktan uzaklaşıyordu. LXC hafif bir sanallaştırma olarak faydalıydı, ama büyük bir geliştiriciye veya kullanıcı deneyimine sahip değildi. Docker teknolojisi, kapsayıcıları çalıştırma yeteneğinden daha fazlasını getiriyor - aynı zamanda kapsayıcıları oluşturma, görüntüleri gönderme ve görüntülerin (diğer şeylerin arasında) varyasyonlarını yaratma sürecini de kolaylaştırıyor.

 

 

Geleneksel Linux kapsayıcıları, birden çok işlemi yönetebilen bir başlangıç sistemi kullanır. Bu tüm uygulamaların tek olarak çalışabileceği anlamına gelir. Docker teknolojisi ise uygulamaların farklı süreçlere ayrılmasını ve bunu yapabilmelerini sağlayan araçları sağlar. Bu taneli yapının avantajları vardır. 

 

1. Docker Kapsayıcılarının Avantajları

1.1. Modülarite

Docker'ın konteynerlaştırmaya yaklaşımı bir uygulamanın bir parçasını indirme, güncelleme veya onarma, tüm uygulamayı gereksiz yere kullanmadan gerçekleştirme becerisine odaklanır. Bu mikro servis tabanlı yaklaşıma ek olarak, birden fazla uygulama arasındaki işlemleri, hizmet odaklı mimarinin (SOA) çalışması şeklinde paylaşabilirsiniz.

 

1.2. Katmanlar ve Görüntü Sürümü Kontrolü

Tüm Docker görüntü dosyaları bir dizi katmandan oluşur. Bu katmanlar tek bir görüntüde birleştirilir. Görüntü değiştiğinde ya da bir kullanıcı çalıştırma veya kopyalama gibi bir komut belirttiğinde yeni bir katman yaratılır. 

Docker yeni katmanlar için bu katmanları tekrar kullanır, bu da yapım sürecini çok daha hızlı hale getirir. Ara değişiklikler görüntüler arasında paylaşılır; hız, boyut ve verimliliği daha da artırır. Katmanlaşmanın doğası sürüm kontrolüdür. Her defasında yeni bir değişiklik olduğunda, esasen yerleşik bir değiş-tokuşa sahip olursunuz - kapsayıcı görüntüleriniz üzerinde tam kontrol sahibi olursunuz.

 

1.3. Geri Alma

Belki de katmanlaşmanın en iyi yanı geri döndürme kabiliyetidir. Her resmin katmanları vardır. Bir resmin mevcut yinelemesini beğenmediniz mi? Önceki sürüme geri döndürün. Bu hızlı bir gelişim yaklaşımını destekler, sürekli entegrasyon ve dağıtım (CI / CD) araç perspektifinden bir gerçeklik yaratmaya yardımcı olur.

 

1.4. Hızlı Dağıtım

Her işlem için bir kapsayıcı oluşturarak bu benzer süreçleri yeni uygulamalarla hızlı bir şekilde paylaşabilirsiniz. Ayrıca bir işletim sistemine bir kapsayıcı eklemek veya taşımak için önyükleme yapması gerekmediğinden dağıtım süreleri büyük ölçüde kısalır. Bunun da ötesinde dağıtım hızıyla, konteynerleriniz tarafından yaratılan verileri endişe duymadan kolayca ve uygun maliyetle oluşturabilir veya yok edebilirsiniz.

Yani Docker teknolojisi verimliliğe daha çok önem veren granüler, kontrol edilebilir, mikro servis tabanlı bir yaklaşımdır.

 

 



Eğitimlerle ilgili bilgi almak ve diğer tüm sorularınız için bize ulaşın!

Docker Hub, farklı kullanıcılar tarafından oluşturulan Docker görüntülerini (Docker Image) indirmenize olanak tanıyan bulut üzerinde bir kayıt defteri hizmetidir. Farklı görüntüleri indirebildiğiniz gibi kendi Docker yerleşik görüntülerinizi Docker Hub'a yükleyebilirsiniz ve bu paylaşım özellikleri GitHub ile benzerlik gösterir. Docker Hub çalışma grupları oluşturmanıza ve tasarladığınız imaj depolarını kuruluşunuza özel bir depo olarak kullanmanıza olanak tanır ve bu sayede ekip çalışmasını daha etkili ve kolay hale getirir.
Kubernetes ve Docker farklı teknolojiler olsa da, son derece tamamlayıcıdırlar ve güçlü bir kombinasyon oluştururlar. Docker, geliştiricilerin uygulamaları küçük, izole kapsayıcılar halinde kolayca paketlemelerine olanak tanır. Geliştiriciler daha sonra bu uygulamaları, uyumluluk sorunları olmadan çalıştırabilirler ve bir uygulama test sırasında tek bir düğümde (Docker node) çalışırsa, her yerde çalışacaktır. Talep arttığında ise, Kubernetes, Docker konteynerlerinin orkestrasyonunu sağlar, yüksek kullanılabilirliği sağlamak için bunları zamanlar ve otomatik olarak dağıtır. Kubernetes, kapsayıcıları çalıştırmanın yanı sıra yük dengeleme, kendi kendini iyileştirme ve otomatik kullanıma sunma ve geri alma avantajlarını sağlar.
Docker, containerlar kullanarak uygulamalar yaratmayı, yaratılan uygulamaları dağıtmayı ve çalıştırmayı kolaylaştırır. Kapsayıcılar, bir geliştiricinin bir uygulamayı, kütüphaneler ve diğer bağımlılıklar gibi ihtiyaç duyduğu tüm parçalarla paketlemesine ve tek bir paket olarak dağıtmasına olanak tanır. Docker Kubernetes ile entegre çalıştığından ve Docker kurulumu ve Docker kullanımı sırasında birbirlerini tamamlayıcı görevler alırlar.
Docker Compose, çalışma prensibi bakımından çoklu kapsayıcıları tek bir yerde toplayarak tek bir iş yapılmasını sağladığından bir toparlayıcıya benzetilebilir. Bu yönüyle Docker Compose kapsayıcıları ortak bir amaca uygun olarak çalıştırmak için kullanılır. Buradaki containerların her biri ayrı olarak çalışır, ancak gerektiğinde birbirleriyle etkileşime girebilir. Docker Compose dosyalarının, Yet Another Markup Language anlamına gelen XML tabanlı bir dil olan YAML adlı scripting dilinde yazılması çok kolaydır. Docker Compose ile ilgili bir diğer büyük avantaj, kullanıcıların tek bir komut kullanarak tüm containerları etkinleştirebilmesidir.
Docker Swarm, Docker uygulamalarında çalışan bir yönetim aracıdır. Son kullanıcıların (End-users) bir Docker düğümleri kümesi (clusters of Docker nodes) oluşturmasına ve dağıtmasına yardımcı olur. Bir Docker Swarm'ın her düğümü (node) bir Docker arka plan programıdır ve tüm Docker arka plan programları Docker API'sini kullanarak etkileşime girer. Swarm içindeki her container aynı kümenin düğümleri tarafından konuşlandırılabilir ve erişilebilir.
Docker, uygulama geliştiricilerinin, uygulamalarınızı ve hizmetlerinizi sağlayan yerel kapsayıcıları (Docker containers) kullanarak standartlaştırılmış ortamlarda çalışmasına izin vererek uygulama geliştirme yaşam döngüsünü kolaylaştırır. Geliştiricileriniz yerel olarak kod yazar ve Docker kapsayıcılarını (Docker containers) kullanarak çalışmalarını meslektaşlarıyla paylaşır. Geliştiriciler Docker Kubernetes ile uygulamalarını bir test ortamına göndermek ve otomatik ve manuel testler yürütmek için Docker kurulumu kullanırlar. Geliştiriciler hatalar bulduklarında, bunları geliştirme ortamında düzeltebilir ve doğrulama için test ortamında yeniden konuşlandırabilirler.

Son Blog Yazılarımız

Sitemizi kullanarak çerezlere (cookie) izin vermektesiniz. Detaylı bilgi için Çerez Politika'mızı inceleyebilirsiniz.