Docker hakkında en çok sorulan 10 soru 2


Konteyner teknolojileri ve onun hakkında yazılan makaleler ve projeler gün geçtikçe daha da artmaktadır. Bende internette okuduğum bir makaleyi1 kendim anladığım şekilde yazmaya çalıştım. İşin biraz daha teknik boyutundan ziyade kullanım alanları ile alakalı örnekler verdim.

Yazıyı okurken fazla üsluba takılmayın, Açıkçası bu blogda bende Rönesanstaki tiyatro anlayışı ile alakalı bilgiler vermeyi isterdim1 Ama gel gör ki, yapılan iş sürekli benzer konular olunca ister istemez, insanın biraz kendini eğlendirmesi gerekiyor. Ben yazarken eğlendim ve yeni şeyler öğrendim umarım sizin içinde aynısı olur.

İçerik

 

Konteyner teknolojisi falan ama bu Docker ne?

So what exactly is Docker? Something about “container applications” right?

Docker, yazılımcıların ve sistem operasyon ekiplerinin kullanması için hazırlanan kullanılacak olan yazılımın daha kolay, daha çevik ve ayrıca kontrol edilebilir bir şekilde çalışmasını sağlayan açık kaynak bir yazılımdır. Programları adeta bir kafes içerisinde izole ederek daha standart dış koşullardan etkilenmeyen bir sistem yaratmaya çalışan bir projedir diyebiliriz.

Sanallaştırmadan farkı nedir? Sanallaştırmanın yerini alacakmı?

What is a Docker container and how is it different than a VM? Does containerization replace my virtualization infrastructure?

Hiç alakası yok gibi bir cümle ile başlayalım ki kafalarda soru işareti kalmasın (tabi işin ayrıntısına inmeden). Docker sanallaştırmadan farklı olarak, sanallaştırılmış veya bare-metal makinelere yüklenebilen bir yazılımdır. Her Docker konteyner, konak olarak bulunduğu işletimi sisteminin kernelini aslında (farketmeden) kendi kernel’iymişçesine kullanarak gerekli olan görevini yerine getirir.

Aşağıdaki resim, olayın biraz daha resimleştirilmiş hali. Solda gördüğünüz yapı Docker, sağda gördüğünüz yapı sanallaştırmanın yapısını gözler önüne seriyor.

 

Bütün olayın aslında bilgisayarı, programları kandırarak birşeyler yaptırılmaya çalışıldığını anladığımda gerçekten üzüldüm. Evet Docker denilen teknoloji, eskiden de gerçekleştirilebilen işlemlerin artık, biraz daha kontrol edilebilir şekilde yapılmasını sağlayan bir yapıdır.

Konteyner teknolojileri kullanmanın faydaları nelerdir?

What’s the benefit of “Dockerizing?”

  • Container as a Service(CaaS) ile uygulamalarınızı kontrol edilebilir, çevik ve taşınabilir bir ortam sağlar.
  • Docker ile uygulama ortamları daha kolay bir şekilde hazırlanabilir.
  • Docker kullanılan sistemlerde debug işlemleri çok daha basit bir şekilde yapılabilir.
  • Temel güvenlik yapıları olan LDAP ve AD sistemlerini destekler.
  • Hiç sistemde kayıp(0 downtime) olmadan AWS deki konteynerinizi Azure sistemlerine taşıyabilirsiniz gibi bir iddaaları bile var.
  • Daha ne olsun
  • Gülümsemeyi kaçırmadınız umarım

Fiziksel(Hardware) çevçevesinden bakarsak, Docker, veri merkezi içerisinde çalışacak olan bir aygıt mıdır?

From an infrastructure standpoint, what do I need from Docker? Is Docker a piece of hardware running in my datacenter, and how taxing is it on my environment?

Docker sisteminiz fiziksel, sanallaştırılmış ne olursa olsun desteklediği işletim sistemlerine ve kernellere yüklenebilen 80 MB boyutunda bir programdır. Herhangi bir ekstra özelleşmiş bir hardware’ra gereksinim yoktur.

Dockerlaştırılmış düğüm nedir?

What exactly do you mean by “Dockerized node”? Can this node be on-premises or in the cloud?

Dockerlaştırılmış düğüm bare-metal2 veya sanallaştırılmış bir yapı üzerinde çalışan yapıdır.

Docker, bütün işletim sistemini paketleyip mi işlemi daha kolay hale getiriyor?

Do Docker containers package up the entire OS and make it easier to deploy?3

Cevap: Hayır, Docker bütün işletim sistemini paketleyecek bir işlem yapmaz. Docker sadece içerisinde çalışacak olan programın gereksinimlerini imaj içerisinde bulundurur. Blog yazısında bu konuyu bir kaç satırda açıklamış ama bu konu ile gerçekten ilgileniyorsanız.

Docker layer sistemleri;

Docker üzerinde hangi işletim sistemleri çalşabilir?

What OS can the Docker Engine run on?

Docker Engine üzerinde hangi Linux dağıtımları çalışır;

Yazarsanız microsoftun bu konuya ne kadar yakından ilgilendiğini görebilirsiniz. Ayrıca Hyper-V ile alakalı makalelere4 bakabilirsiniz.

Docker, sistemimi kontrol etmemi nasıl sağlar? Bütün sistemi konteyner olarak çalıştırmam gerekir mi?

How does Docker help manage my infrastructure? Do I containerize all my infrastructure or something?

Docker sizin sisteminizin ne olduğu ile ilgilenmez veya bunu yönetmeye çalışmaz. Docker kendi işini; Docker Engine ile yaptığı yalıtılmış bölgede, bütün uygulamalarınızın sıkıntısız bir şekilde çalışmasını gerçekleştirir. Bu da size uygulamalarınızı çalıştırırken çeviklik ve taşınabilirlik ve ihtiyacınız olan bütün kontrolü elinizde tutmanızı sağlar.

Bir makinede kaç tane konteyner çalışabilir?

How many containers can run per host?

Bu sorunun cevabı, tam olarak sizin sisteminizin kaynaklarına bağlı olarak değişebilir. Sonuçta yazdığınız program ne kadar kaynak istiyorsa onu vermek zorundasınız. Yani 3 kuruş 5 köfte mevzusu. Güzel olan taraf konteynerler ufak boyutlu yapılardır ve gerçekten bir sistemin çalışması için gerekli en küçük yapıları bulundurur.

Eğer sanallaştırma ile kurulmuş bir işletim sistemi ile konteynerleştirilmiş bir işletim sisteminin boyutlarını karşılaştırırsanız, farkı daha iyi anlayabilirsiniz.

Docker kullanmaya nasıl başlayabilirim?

What do I have to do to begin the “Dockerization process”?

Aşağıdaki linkleri kullanarak

  • Windows
  • Linux
  • Mac
  • AWS
  • Azure

sistemlerine Docker kurulumu yapabilirsiniz.

https://www.docker.com/products/docker

Footnotes:

2

fiziksel makine anlamına gelmektedir.

3

Bu yukarıda paketlemek anlamında yazılan soru “Docker işletim sistemini template haline getirip mi daha kolay hale getiriyor?” diye de yazılabilirdi çok fazla yapıyı bozmamaya çalıştım. Zaten amacım çeviri yapmak değil bundan önceki kısımda gördüğünüz üzere 🙂

  • g3hΛn

    merhaba, docker container’ı ile çalıştığımızda dockerda koşan uygulamanın oluşturduğu verilere ne oluyor? yani basit şekilde incelediğimde evet servis çalışıyor işlemi yapıyor çıktıyı üretiyor. ama daha complex bi işlemde örneğin bi veri tabanı işleten bi uygulama koşturuyorsak docker’da o zaman bu veritabanı docker kapandığında uçacak mı? ya da her yeniden çalıştırmada konfigürasyon gerektirecek mi?

    • enisozgen

      Ne yazık ki gidişat onu gösteriyor :). Docker 20. yüzyıl sistemi olduğu için, kullan at yapısını gereğinden fazla uyguluyor :). Bir işlemi bitirdikten sonra kendini kapatıyor.
      Benim fikrimce veri önemli bir yapı olduğu için, veritabanını bağlantı olarak konteyner olmayan bir yapıda tutmak daha iyi olabilir.