Sanallaştırma
Var olan bir fiziksel sunucu içerisinde birden fazla sanal sunucu oluşturabiliriz. Örneğin windows bir sunucu içerisinde sanal linux oluşturabiliriz.
Bizim fiziksel sunucumuzun kendisinin çalışabilmesi için bir operating sisteme ihtiyacımız var. Fiziksel sunucunun işletim sistemi sistem kaynağının belli bir kısmını kendisi tüketiyor.
Sanal Sunucular fiziksel sunucu üzerindeki kaynakları nasıl kullanıyor ?
Bir sanal makina oluşturduğumuzda bunun içerisine bir işletim sistemi kuruyoruz.
Yukarıdaki görsele baktığımız örneğin windows bir fiziksel sunucumuz olduğunu düşünelim.
Fiziksel sunucumuz içerisinde 10 gb windows için kullanılısın. 2 GB da sanal makinaları kurabilmek için sunucuya indirdiğimiz uygulama olsun. Daha bir fiziksel sunucuya hiç bir sanal makina kurmadığımz halde 12 gb bir alan kullanılamaz durumdadır.
Daha sonra fiziksel sunucuya sanal sunucu kurmaya başladığımızda her bir sanal sunucuda kendi içinde işletim sistemi bulunduracaktır. Diyelimki her bir sanal sunucu için 8gb alan tahsis etmeye karar verdik. Bu sanal sunucuların zaten 4gb gibi kısmı sanal sunucuya ait işletim sistemi için kullanılacak. 1gb içindeki araçlar için kullanılsa geriye 3GB gibi alan kalıyor. Burada her bir sanal sunucu için ayıracağımız belleğin yarısından fazlası kullanılamayacak duruma geliyor. Ve bu her sanal sunucuda CPU'da tüketiyor.
ÇÖZÜM
Docker: Bir uygulamanın bağımlılıklarını ve kütüphanelerini bir container içerisinde paketleyerek güvenli bir şekilde izole halde çalışması için bir çözüm sağlar.
Örneğin üç farklı teknoloji ile yazılan, derlenen birer projemiz olduğunu varsayalım. Docker bu üç uygulamayı aynı sunucu üzerinde bir birlerinden izole edilmiş şekilde çalışabilmesini sağlayan teknolojidir.
Docker Daemon, docker'a ait bir API'dir ve Rest API ile haberleşir. Client tarafından girilen emir CLI üzerinden Rest API şeklinde geliyor ve docker daemon bunları işliyor.
Fiziksel sunucumuz içersinde hali hazırda Operating System(işletim sistemi) bulunmaktadır. Biz OS içerisine DOCKER kuruyoruz. Docker, bizim uygulamalarımızın çalışabilmesi için adı Container olan ortamlar sunuyor.Uygulamalarımızı bu container içerisine ekliyoruz ve başlatıyoruz.
Container, Docker imageleri alıp kendi içerisinde çalıştırabiliyor.
Docker İmage, uygulamalarımızı ve uygulamaların ihtiyacı olan herşeyi içinde barındıran hazır paketlerdir.
Docker build, Yeni bir docker image oluşturmak istediğimizde
Docker pull, herhangi bir repositoryden docker image'ı localimize indirilmesi
Docker run, Bir image'in container içerisinde çalıştırılması. Çalıştırmak istediğimiz image localimizde bulunmuyorsa ilk olarak bu image'i repositoryden localimize pull yapar.
Port Yönetimi
Docker Desktop içerisinde bulunan containerların dıış dünyaya yayın yapabilmesi için portlar üzerinde servis yapmaları gerekir. Yukarıdaki görsele bakarsak dış portlar her bir container için uniq olması gerekir fakat iç portlar aynı olabilir. IP Tables route ediyor. İç portlarda çakışma meydana gelmez.
Hiç yorum yok:
Yorum Gönder