Docker Nedir

Selamlar arkadaşlar bu yazımda sizlere Docker hakkında bilgiler vereceğim. Bu alanda yeni ilerlemeye başladım ve her öğrendiğim ayrıntıyı size anlatacağım şimdiden iyi okumalar. J

Docker nedir?

Docker, yazılımcılar ve sistemciler için geliştirilmiş açık kaynaklı bir sanallaştırma platformudur. Docker ile Linux, Windows ve MacOSX işletim sistemleri üzerine kurulabilir ve bu sayede birbirinden bağımsız ve izole şekilde Windows ve Linux Containerlar oluşturularak kullanılmasını sağlayan bir teknolojidir. Sunucu maliyetinde önemli bir azaltma sağlayan Docker sayesinde, Web sistemlerinizin kurulumu, testi ve dağıtımını kolaylıkla yapabilirsiniz.

Docker ile sanallaştırma işlemi yaparken Virtualbox, HyperV ve VMWare gibi bilenen Sanallaştırma teknolojileri gibi Hypervisor katmanına sahip değilsiniz. Docker Engine üzerinden OS’inize erişmekte ve sistem araçlarını paylaşımlı olarak kullanmaktadır. Bu sayede diğer VM’lere göre daha az sistem kaynağı tüketmektedir.

Docker, LXC sanallaştırma mekanızması üzerine kuruludur. Docker üzerinde çalıştıralan Image’lar Container denilen birimlerde çalıştırılmaktadır. Container’ların her birinde Process kullanılmaktadır. Bu Image’lar ortak olan sistem dosyalarını paylaşdığından dolayı disk alanından tasarruf da sağlanmış oluyor. Klasik sanallaştırma teknolojilerinde ise her bir süreç için ayrı bir OS kullanılıyor buda konak sunucunuzdaki kaynakları çok tüketiyor.

Docker Terimlerinden bir kaçını yazıyor olacağım şimdi.

– Docker Daemon :
Hypervisor’un Docker’daki karşılığıdır. Tüm CPU ve RAM gibi OS’e ait olan işlerin yapıldığı bölümdür.

– Container :
Docker Daemon
tarafından Linux çekirdeği içerisinde içerisinde birbirinden izole şekilde çalıştırılan Process’lere verilen isimdir. Docker içerisinde koşturulan her programa deriz yani.

– Image :
Container’lara kurulan ve Run edilen her bir Uygulama ve OS’lere verilen isimdir.

– Dockerfile :
Belli bir Image oluşturmak için var olan tüm katmanların açıklandığı uzantısı olmayan dosyadır. İçerisinde hangi Image’ın kullanılacağı, hangi dosyaları içerdiği ve uygulamaların hangi parametrelerle çalışacağı yazılır. Bu dosyada bulunan komutlar tek tek çalıştırılır. Her bir komut sayesinde yeni katmanlar oluşturulur ve Build sonunda Docker Image’ımız olur. Daha sonra bu Image’lar sayesinde yeni Container’lar ayağa kaldırabiliriz. Bilinmesi gereken en önemli kural dosyanın isminin “Dockerfile”  şeklinde olmak zorunda olmasıdır. Baş harfi büyüktür.

– Docker Registry :
Bu sistem içerisinde bulunan image’lara erişebilmek ve kullanabilmek için DockerHub bulunmaktadır. DockerHub; geliştiricilerin de Image oluşturup Private  ya da Public olarak başkalarının kullanımına sunabileceğimiz bir alandır. Image’lar buradaki Docker Registryler tutulmaktadır.

Örnek olarak siz Container’ınızda PostGreSQL çalıştırmak istiyorsunuz bunun için docker pull postgres yazarak indirebilir ve kullanmaya başlayabilirsiniz.

– Docker CLI :
Kullanıcı ve Docker Deamon arasında anlaşmayı sağlayan CLI ekranıdır. Örnek olarak Windows üzerinde çalıştırıyorsanız bu ekran CMD’dir.

– Docker Compose :
Birden fazla Containere’a sahip Docker uygulamalarını tanımlamak ve çalıştırmak için kullanılır. Uygulamamızın servislerini ayarlamak için YAML dosyası kullanılır sonrasında tek bir komut ile ayarlarımız ve servislerimizi oluşturup çalıştırabiliriz.

Compose tüm ortamlarda çalışır. Production, Staging, Development, Testing ve diğer CI iş akışlarında.

Compose işlemi temelde üç adımlık süreçtir :

1 – Dockerfile dosyası ile uygulama ortamımızı tanımlıyoruz.
2 – docker-compose.yml uygulamalarımızı beraber çalışacak şekilde ayarlıyoruz.
3 – docker-compose up tüm uygulamalarımızı başlatıyoruz.

– Docker Avantajları :
1 – Docker’lar çok hızlı bir şekilde çalışmaya başlarlar. Barındırdıkları uygulamalar sadece bir Process’dir. Bu sayede Sanal Makine’ler de olduğu gibi OS yükü bulunmamaktadır.
2 – Hızlı Deployment sayesinde istediğiniz uygulamayı hızlıca ayağa kaldırabilirsiniz.
3 – Sanal makinelere göre Docker üzerinde bulunan Container’ları çok kolay şekilde çalıştırabilir veya istediğimiz zaman durdurabilir, yok edebiliriz. Bu Container’ları Manage etmek için Orchestrator diye adlandırılan Kubernetes teknolojileri kullanılmaktadır. Bu Açık Kaynak uygulama ile Container’ların dağıtımını, yönetilmesini ve ölçeklendirmesini otomatikleştirebiliriz.
4 – Host edilen cihaz üzerindeki kaynağı kullanan Docker, daha az kaynak tüketimi ile VM’lere oranla daha fazla Container çalıştırmamıza olanak sağlar.
5 – Docker ile Deployment’larınızı hangi cihaza atarsanız atın, Local’inizde çalıştırdığınız gibi kodlarınız diğer sunucularda da çalışacaktır. Bu sayede bize Deployment kolaylığı sağlamaktadır.
6 – Windows, Linux ve MacOS işletim sistemlerinde çalıştırabilirsiniz.
7 – Birden çok popüler Cloud hizmeti ile Entegre çalışabilirler (Microsoft Azuer, Kubernetes).

– Docker VS Virtual Machine :

Docker (Open Source) bir sanallaştırma teknolojisidir. Hypervisor gibi bir katmana sahip olmayan bu yapı VMware gibi yazılımlardan daha farklı bir sanallaştırmaya sahiptir. Docker Container adı verilen birbirinden tamamen izole ve bağımsız şekilde çalışan Process’lerden oluşur. Docker’ın üzerinde Host edildiği OS içerisinde binlerce Container barındırabilir. Bu Container’lar Host edildiği cihazın kaynağını kullanırlar ancak bu kaynak kullanımı VM’lerden çok çok çok az olacak şekildedir. Bundan dolayıda maliyetlerde düşüş sağlanır. J

Virtual Machine’lar da ise her cihaz kendi OS’ini sahiptir. Üzerinde host edildiği cihazın donanımlarını kullanan bu yapının genellikle maliyeti fazladır. Örnek olarak Windows üzerinde Linux çalıştırmaya çalıştığınız da CPU ve RAM alanları bu cihaz için tahsis etmeniz gerekmektedir. Bundan dolayı hem Host cihazınızın hem de VM cihazınızın hızı düşecektir.

Yukarıda da dediğim gibi Docker, Host edildiği OS’in bir Process’i gibi çalıştığından dolayı kaynak tüketimi mükemmel derece düşüktür.

Docker konusunda ufak bir giriş yaptık arkadaşlar sonrasında Docker’ı Windows ve Linux cihazlara nasıl kuracağımızı anlatacağım size.

Umarım yazdıklarım sizler için yararlı olur. Yorumlarınızı esirgemeyin ve sorularınız olursa lütfen yorum olarak bırakın. Herkese kolaylıklar dilerim.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir