Blog

Docker Nedir?

Docker, conteiner teknolojisi kullanarak uygulama oluşturmayı, dağıtmayı ve çalıştırmayı kolaylaştırmak için tasarlanmış bir araçtır. Örnekle açıklayacak olursak, yazdığımız kod bizim bilgisayarımızda sorunsuz çalışabilir. Ama tester kodu kontrol ederken testlerin sisteminde çalışmıyordur. Peki bu sorun neden kaynaklanır? Sorunun nedeni, sizin bilgisayarınızdaki bu programın çalışması için gereken ortam ve konfigürasyonun birebir aynısı karşı tarafta olmadığındandır. Kullandığımız programlama dillerinin versiyon farkları, bilgisayar hafızası hatta işlemciler bile birçok şeye etki edebilir.

Bir program geliştirdiğimizi düşenelim, gerekli olan programlama dilleri Java8, Python2.7 ve Tomoat 6 olsun. Başka bir programlama daha tasarlayacak olalım ve onun da gereksinimleri Node JS, Python 2.8 ve Redis 4 olsun. Bu durumda 2 farklı Python versiyonu kullanıyor olacağız ve bu karışıklığa neden olabilir. Bunu sadece tek bir versiyon farkı olduğu için çözülebilir bir sorun olarak kabul edebiliriz. Peki, üçüncü bir program tasarlayacak olduğumuzda ve gereksinimleri de Java12, Python3.8 ve Redis 5 olduğunda ne olur? Bu durumda işler çok daha zor bir hal alır. Bu sistem artık herkesin en ufak bir değişiklik yapmaya korktuğu ve bakımının çok zor olduğu zombi bir sisteme dönüşür. Mesela, bu sistemin güvenlik yamaları, işletim sistemi yamaları ve bakım için gerekli daha nice yamaları var. Bunun yanında programların birinde olan aksamanın diğerlerine yansıtılmaması da çok önemlidir.

Yazılım sektöründe programların birbirinden bağımsız çalışabilmesini sağlayabilmek için birçok geliştirmeler yapılmıştır. İşletim sisteminde, özellikle UNIX içerisinde değişik komutlar eklenerek bu sorunlar çözülmeye çalışılmıştır. En büyük çözümlerden biri Virtual Machine dediğimiz sanal makineler olmuştur.

Sanal Makine Nedir?

Sanal makine, bir bilgisayar sisteminin emülasyonudur, yani donanımda birçok bilgisayar gibi görünen sistemlerin tek bir bilgisayarda çalıştırılmasıdır. Her sanal makine kendi temel işletim sistemine ihtiyaç duyar ve donanım sanallaştırılır. Her bir sanal makine donanımdan kendine bir pay alır ve tek başınaymış gibi hisseder. Mesela insanın sağ kolunu Linux işletim sistemi yaptık ve o kolu sadece Linux kullanabilecek, sol kolunu da ayrı bir işletim sistemine ayırdık diyelim. Yani performansı düşüren bir uygulama olduğunu bu örnekten anlayabiliriz. İki kolla yapacağımız işleri tek kolla yapıyorsunuz ve gerçekten tek kollu olduğunuzu düşünüyorsunuz.  Ne kadar da performans düşürücü bir uygulama değil mi? Bunların donanımla bağlantısını sağlayan yazılım ve ya donanıma ise Hypervisor diyoruz.

Şekilde bir sanal makine gösterimi bulunmaktadır.

Sanal Makine

Sanal Makinenin Dezavantajları Nelerdir?

Sanal makinenin dezavantajları çok fazladır. Birden fazla işletim sistemini içerdiği için çok fazla alan kaplar ve hafızayı azaltır. Daha fazla kaynak gerektirir ve maliyetlidir. Sanal makine kullanımı çok yavaştır.

Docker

İlk başta da belirttiğimiz gibi, Docker, conteiner teknolojisi kullanarak uygulama oluşturmayı, dağıtmayı ve çalıştırmayı kolaylaştırmak için tasarlanmış bir araçtır. Conteiner, kodu ve tüm bağımlılıkları paketleyen bir yazılım birimidir. Böylece uygulama bir bilgisayar ortamından diğerine hızlı ve güvenilir bir şekilde paylaşılır ve çalışır. Conteinerler temeldeki bir bilgisayarı sanal makineler gibi sanallaştırmak yerine yalnızca işletim sistemini sanallaştır. Conteinerler fiziksel bir sunucunun ve ana işletim sisteminin üstüne oturur.

Container

Her conteiner ana bilgisayar işletim sistemi çekirdeğini ve binary, library gibi parçacıklarını paylaşır. Kütüphane gibi işletim sistemi kaynaklarını paylaşmak, işletim sistemi kodunu çoğaltma ihtiyacını önemli ölçüde azaltır ve bir sunucunun tek bir işletim sistemi yüklemesiyle birden fazla iş yükünü çalıştırabileceği anlamına gelir. Docker conteinerlerin ana bilgisayarla çalışmasına olanak sağlayan araç ise conteiner engine ’dir. Popüler conteigner engineler; docker, linux conteiners ve windows server conteinersdir.

Aralarındaki farklar şu şekildedir;

 

SanallaştırmaKonteynerleştirme
Kaynak kullanımı çok fazladır.Kaynak kullanımı çok azdır.
Onlarca GB boyutundadır.MB boyutundadır.
Ana bilgisayar donanımını bölerek sanallaştırır.Ana bilgisayar donanımını paylaşır.
Başlatılması çok zaman alır.Başlatılması çok kısa sürer.
Sıfırdan kurulumu çok zaman alır.Kurulması saniyeler alır.
Donanım kaynakları düzeyinde sanallaştırma uygulanabilir.Onlarca konteyner oluşturulabilir.
Sanal bilgisayarlar birbirinden tamamen izole şekildedir.Konteynerler işletim sistemi seviyesinde izole edilir.
Dağıtımı zordur.Dağıtımı kolaydır.
Farklı ortamlarda çalışmama sorunu ortaya çıkabilir.Her ortamda çalışacak durumda tutar.

 

 

Öner Bilşim olak sunduğumuz, kamu ve özel sektörün önde gelen kuruluşlarında yaygın olarak kullanılan insan kaynakları yazılımı BilişimHR’ın teknolojisinde işletmelerin alt yapı yatırımını zorlamamak için Docker konteyner mimarisi tercih edilmiştir.

BilişimHR hakkında detaylı bilgi almak için tıklayınız.

Blog

Öne Çıkan Yazılar

Öner Bilişim iş çözümleri ile işletmenizin dijital dönüşümünü birlikte tamamlayalım.

Demo Talep Et