DOCKER HAKKINDA BİLMENİZ GEREKENLER





Docker Nedir?

Docker, Türkçe’de “konteynerleştirme” kavramıyla da bilinen, işletim sistemi seviyesinde sanallaştırma sağlamaya yarayan açık bir platformdur. Kısaca, bir virtual machine yani sanal makinedir. Bu bilgisayar programı uygulamaları geliştirmek, göndermek ve çalıştırmak için kullanılmaktadır. Uygulamalarınızı altyapınızdan ayrı tutmanıza yarayan Docker sayesinde, yazılımlarınızı hızlı bir şekilde teslim edebilirsiniz. Bu sayede kurumsal altyapınızı da uygulamalarınızı yönettiğiniz şekilde yönetebilirsiniz.

Popüler sanal makinelerden (“virtual machines”) VirtualBox ve VMware, Docker’ın sanallaştırma yapısından oldukça farklıdır ve Hypervisor katmanına sahiptirler. Bunlardan farklı olarak Docker böyle bir katmanı olmadan, Docker Engine üzerinden konak işletim sistemine erişebilmekte ve sistem araçlarını kullanabilmektedir. Bu açıdan bakıldığında, diğer sanal makinelere kıyasla Docker daha az sistem kaynağı tüketmektedir ve sanallaştırma için gerekli disk alanından tasarruf etmektedir.

Docker Nasıl Kurulur? Docker İndirmek

Docker’ın kurulumu kullandığınız platforma göre değişiklik gösterir. Bu yazımızda Docker hakkında en sık sorular sorulara cevap vereceğimiz için kurulumun nasıl yapıldığına girmeyeceğiz. Ama aşağıdaki linklerden kendi platformunuzu seçerek Docker kurulumu yapabilirsiniz. 

Windows 
Mac 
Linux

Docker Daemon ya da Docker Engine Nedir?

Docker nedir?” sorusunu yanıtlarken, Docker’ın diğer sanal makinelerden farklı olarak bir Hypervisor katmanına sahip olmadığını söylemiştik. Bu katmanın Docker’daki karşılığı Docker Engine ya da Daemon’dır. Linux Kernel’in LXC setinin yerine geçer. Docker Engine, uygulamalarınızı oluştururken ve konteynerlaştırırken kullanacağınız, açık kaynaklı bir konteynerleştirme teknolojisidir.

Docker Nasıl ve Ne İçin Kullanılır?

Yazılım geliştirme yapan neredeyse tüm yazılımcıların başına gelen bir sorundan bahsederek başlayalım. Yazılımcının yazdığı kod kendi bilgisayarında sorunsuz olarak çalışmaktadır. Test etmesi için kodu tester’a verdiğinde ise onun bilgisayarında çalışmadığını öğrenir. Bunun nedeni, yazılımcının bilgisayarında kodun çalışması için gerekli olan ortam ve konfigürasyon mevcutken, tester’da bu ortamın olmamasıdır. Yani, kodun yazıldığı ortam ve uygulamanın deploy edildiği ortamın şartları arasında farklılıklar bulunmaktadır. 

Bu sorunun çözümü ise Docker ile mümkündür. Docker kullanarak hazırlanan ve paylaşılan kodlara, bu sayede hem geliştirici ortamında hem de kodun deploy edildiği standartlaştırılmış UAT (User Acceptance Test) ve PROD (Production) ortamlarında erişilebilir. Bu sayede geliştirme yaşam döngüsü (lifecycle) kolaylaştırılır. Konteynerlar aynı zamanda sürekli entegrasyon ve sürekli teslim (CI/CD) iş akışları için de çok uygundur.

Bunların yanı sıra, Docker’ın konteyner-tabanlı platformu, yüksek düzeyde taşınabilir iş yüklerine olanak tanır. Docker konteynerları, bir yazılımcının şahsi dizüstü bilgisayarında, bir veri merkezindeki fiziksel veya sanal makinelerde, bulut sağlayıcılarda ve her türlü standartlaştırılmış ortamda çalışabilirler. 

 




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.

İlgili Eğitimler

Son Blog Yazılarımız

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