Docker Nedir, Ne İşe Yarar?

Docker, popüler ve büyük şirketlerin de kullanımıyla popüler hale geldi. Daha sonra Docker kullanımı diğer şirketler tarafından da tercih edilmeye başladı. Docker ‘ı kısaca tanımlamak gerekirse, birbirinden bağımsız binlerce container’lardan oluşan bir teknolojidir denebilir. Open Source bir teknolojidir. Open Source bir teknoloji olması bir avantajdır. Çünkü isteyen herkes Docker’ın gelişimine katkı sağlayabilir.  

Docker, uygulamalarınızı daha hızlı derlemenizi, uygulamalarınızın testini yapıp dağıtımını gerçekleştirmenizi sağlayan bir platformdur. Aynı işletim sistemi üzerinde birbirinden bağımsız ve izole bir şekilde container’lar bulunur. Çok sayıda bulunan container’larda birden fazla farklı uygulamalar çalıştırılabilir.

Docker uygulamaları çalıştırmak ve depolamak gibi işlemleri yerine getirir. Docker bu işlemi yerine getirebilmek için container’lar oluşturur ayrıca sanallaştırmadan faydalanır. Fakat bu sanallaştırma ile sanal makineler ile karıştırmamalısınız. Sanal makineler ve Docker aynı yapıya sahip değildir.

Docker’ın Sanal Makineden Farkları

  • Docker container’ları kaynak açısından daha verimlidir. Daha hızlı çalışırlar ve daha hafiftirler.
  • Sanal makinelerde her uygulama için bir işletim sistemi ve ilgili kütüphaneler varken Docker’da tek bir işletim sistemi vardır.
  • Docker tek bir işletim sistemi üzerinde container yapıları kullanır.
  • Docker’ın container yapıları sayesinde uygulama boyutu azalır. Ayrıca büyük ölçüde performans artışı da sağlar.
  • Docker’da container’lar uygulama düzeyinde sanallaştırılır.
  • Uygulamaları farklı ortamda çalışacak şekilde tutmaları da Docker container’ların farklılıklarındandır. Bu sayede uyumsuzluk sorunu da engellenmiş olur.
  • Maliyetleri sanal makinelere göre daha uygundur.
  • Daha az maliyetle daha fazla iş yükü sağlar.
  • Docker’lar daha hızlı ölçeklendirilmeyi sağlar.
  • Daha hızlı ve sorunsuz deployment süreci vardır. yazılımcılar açısından da büyük kolaylıklar sağlamaktadır. Yazılım sektöründe çalışanların fazlasıyla karşılaştıkları bir sorun vardır. O da yazılımcının kendi makinesinde gayet sorunsuz çalışan yazılımın sunucuda çalışmama sorunudur. Docker sayesinde bu sorun çözülmüş olur. Docker için yeni environment kurulumu gerekmez.

Docker ve sanal makinelerin yukarıda görüldüğü gibi avantaj ve dezavantajları vardır. Fakat Docker’ın avantajlarının daha fazla ve kritik öneme sahip avantajlar olduğunu görebilirsiniz. Hem maliyet hem de performans açısından da iyi özelliklere sahiptir.

Docker Hakkında Bilmeniz Gereken Terimler ve Bileşenler

Docker’ı kullanmadan önce iyice anlayabilmek için Docker ile ilgili bilgi sahibi olmanız gereken terimler ve bileşenler vardır. Bileşenlerin temel çalışma mantığını bilmek de Docker’ı doğru bir şekilde kullanabilmeniz için çok önemlidir.

Image: Container’lar içerisinde uygulamalar barındırmaktadır. Image’ler ise container’ları oluşturmak için kullanılan paketlerdir. 

Container: Imageler ile üretilen host işletim sistemleri üzerinde çalışan veya çalışmaya hazırlanmış ortamlardır. Sanal makinedeki her iletim sistemine karşılık Docker’da container’lar vardır.

DockerFile: Docker’a özel dosya biçimidir. Bu özel dosya biçimleri , belirlenmiş bir takım kural ve komutları içerir. DockerFile Image üretmek için kullanılır. Bir bakıma Image’lerin kaydını yapan bir dosyadır. her image bu dosyanın altında tanımlanmalıdır.

DockerHub: Bir çeşit community deposu denebilir. Bu depoda Docker image’ler paylaşılır.

Docker Deamon: İşletim sistemine ait işlemler burada yapılır.(CPU,RAM)

Docker Registry: Image’ler Docker Registry’de tutulur.

Docker CLI: Kullanıcı ile Docker Deamon arasında iletişim sağlar. Docker komutları bu ekranda çalıştırılır. Docker ile etkileşime girdiğiniz ekran burasıdır.

Docker Compose: Container ile Docker uygulamaları tanımlanır ve çalıştırılır. Docker uygulamaları birden fazla container’a sahip olduğu için Docker Compose kullanışlıdır. Uygulamanızın yapılandırma hizmetlerini YAML dosyası ile yaparsınız. Docker Compose’ın , veritatabanı , mikroservis gibi bağımlılıklardan oluşan yapılar için kullanılması uygundur. tek bir komutla, uygulama için gerekli tüm servisleri yönetmenizi ve ayarlamalarını yapmanızı sağlar.

Container Engine: Docker teknolojisi Linux Containers üzerine kurulmuştur. Linux Containers Linux sisteminde en alt seviyede bulunan Linux Kernel’e eklenmiştir. Docker tek bir işletim sistem üzerinde container’lar oluşturur. Uygulamaların dağılımını container’lar üzerinde otomatik olarak sağlar. Docker bu özellikleri ile Container Engine olarak tanımlanır.

Docker Swarm: Uygulamalarınız, vertabanı , web sunucuları, uygulama sunucuları gibi büyük bileşenlerden oluşur. Docker Swarm ile büyük bileşenlerden oluşan uygulamalarınızı yönetebilirsiniz. Uygulamalarınızın fazla yük altında çalışması gerektiği durumlarda Docker Swarm ile kolayca ölçeklendirme yapabilirsiniz. 

Docker Volume: Container’lar stateless’tır. Yani hiçbir durum verisi tutmazlar. Bir container uzun süre start/stop şeklinde kullanılırsa verileriniz kaybetmeden kullanabilirsiniz. Fakat bu durum Docker’ın doğasına uygun değildir. Bu kullanım Docker için uygun ve etkin bir yöntem değildir. Container’lardan bağımsız olarak çalışan ,Docker’ın yönettiği ve kalıcı veriler için kullanılan yardımcı mekanizma Docker Volume’dür.

Docker Engine: Docker Engine, Docker platformunun en önemli bileşenlerindendir. Platformun kalbi olarak nitelendirilebilir. Docker Engine istemci sunucu uygulaması olarak çalışır. İstemci sunucu uygulaması Windows ve Linux makineler üzerine kurulabilir.

Docker Engine de 3 farklı bileşenden oluşur. Bunlar sunucu, REST API , komut satırı arabirimi (CLI)’dir. Bileşenlerden sunucu, image, container gibi Docker objelerinin oluşturulmasını ve bu objelerin yönetilmesini sağlar. programlar ve docker daemon arasında iletişim kurulması gerekir. Bu iletişim REST API sayesinde olur. REST API docker’ı ne yapması gerektiği konusunda yönlendirir. Komut satırı arabirimi ise Docker komutlarını çalıştırmaktan sorumludur.

Docker terimleri ve bileşenlerini kısaca açıklandı. Bu terimler hakkında bilgi sahibi olmak Docker’ın kullanımına geçmeden önce hazırlık açısından çok önemliydi. Bileşenleri ve ne işe yaradıklarını bilmek Docker kullanımını anlamanıza yardımcı olacaktır. Buraya kadar Docker nedir? Docker ile ilgili temel terimler nelerdir? Docker ve sanal makine arasındaki farklar nelerdir? sorularına yanıt verildi. Peki Docker ne işe yarar? Şimdi sıra bu soruda.

Docker Ne İşe Yarar?

Docker, barındırdığı container’larda çalıştırdığı uygulamaların kolay ve hızlı bir şekilde bir araya getirilmesini sağlar. Uygulamaların test edilmesine ve dağıtılmasına olanak tanır. Docker, yazılımın çalışma sürecinde kullanılan her bileşeni container birimleri halinde paketler. Yazılımın çalışma sürecindeki bileşenlere örnek olarak kütüphaneler, çalışma zamanları, çalışma araçları verilebilir.

Docker sayesinde veri ortamlarına hızlı bir şekilde veri dağıtılabilir. Kodların doğru çalıştığından emin olabilirsiniz. Docker kullanımı ile daha rahat ve sorunsuz ölçeklendirme yapılabilir.

Bir bulut platformda Docker’ı çalıştırdığınızda uygulama oluşturma, gönderme ve çalıştırma çok büyük ölçüde güvenli olacaktır. Ayrıca bir sunucu kiralamaya göre maliyet oldukça düşük olur.

Docker, mikroservis mimarisinde de oldukça verimli çalışır. Mikroservis mimarisi birden fazla küçük uygulamalardan oluşur. Bir uygulamanın küçük ama kendi içinde çalışabilen parçalara bölünmüş hali gibi düşünebilirsiniz. Mikroservisler küçük uygulamalara benzediğinden her küçük uygulama için bir sanal makine atamak gerekir. Bir uygulamanın küçük bir bölümüne bir sanal makine atamak kaynak kullanımı açısından oldukça verimsizdir. Docker kullanımı ile ise aynı sunucu üzerinde binlerce uygulama çalışabilir. Docker, mikroservis için oldukça kullanışlıdır.

Docker, az kaynakla çok iş yükü yapabilir. Verimlilik açısından Docker’ı güvenle tercih edebilirsiniz. Docker, uygulama işlemlerini standart hale getirir. Kod taşıma işlemi çoğu zaman çok sorunlu bir iştir. Sorun çıkmasın diye endişeli bir şekilde beklemeyi gerektiren bir süreçtir. Fakat Docker bu süreci sorunsuz ve kolay bir şekilde halletmenizi sağlar. Docker hız bakımından da oldukça etkindir. Kısa zaman içinde daha çok yazılım dağıtmanıza olanak tanır. Tabii ki tartışılmaz olarak Docker ‘ın sağladığı en önemli avantajlardan biri tasarruf etmenizdir.

Docker, Sanal makeinedeki gibi bir Hypervisor ve işletim sistemi kullanmaz. Bu sayede saniyeler içerisinde kullanıma hazırdır. Günümüz şartlarında yazılım alanında hızın önemi düşünüldüğünde bu durum kritik bir avantaj sağlar.

Docker uygulamalarınızı standart hale getirir. Bu sayede her platformda aynı şekilde çalıştırabilirsiniz.

Uygulamalarınız belli bir trafikle sorunsuz bir şekilde çalışırken bazı durumlarda beklenmedik yüksek trafikle karşılaşabilirsiniz. Bu durumda normal bir sunucuyla çalıştığınızda uygulamalarınız yoğun trafik yüzünden çalışamama durumuna gelebilir. Ama bu durum Docker’ da böyle değildir. Beklenmedik bir trafik geldiğinde gerekli Container’lar oluştularak trafiğin oluşturduğu yük karşılanır.

Docker Nasıl Çalışır?

Docker her sunucuya yüklenebilir. Container’lara yönelik teknoloji olduğu için container’ları başiatmak, çalıştırmak ve durdurmak için komutları girmeniz için bir ekran sağlar.

Sanal makineler nasıl sunucu donanımını sanallaştırıyorsa, aynı şekilde container’lar da sunucunun işletim sistemini sanallaştırarak mekanizmayı sağlarlar.

Çok Kullanılan Docker Komutları

  • docker ps : çalışmakta olan Container’ları listeler.
  • docker ps-a : Docker Deamon’daki tüm Container’laro listeler.
  • docker images : Local Registry ‘de bulunan tüm image’leri listeler.
  • docker ps-aq : Docker Deamon üzerineki tüm Container’ların id’lerini listeler.
  • docker start<container_id> : Container durdurulmuş ise tekrar başlatır.
  • docker stop <container_id> : Çalışan ilgili container’ı durduran komut.
  • docker pause <container_id> : Çalışan Container ‘ın çalışmasına ara verdirir
  • docker rm -v <container_id> : Çalışan ilgili container’ları ilişkili olduğu volum’lerle beraber kaldırır.
  • docker rm <container_id> : Çalışan ilgili container’ı kaldırır. Ama container’ın ilişkili olduğu Volum’ler kaldırılmaz.
  • docker info : Docker Deamon hakkında özet bilgileri listeler. Bazen Docker deaoman ile ilgili bilgileri görmek isteyebilirsiniz. Bu durumlarda yararlı bir komuttur.
  • docker rm $(docker ps -aq) : çalışan bütün container’ları kaldırır. Dikkatli kullanılması gereken bir komuttur.   

Docker’ın Kullanım Kolaylığı

Docker’ın bir container teknolojisi olması beraberinde birçok avantaj getirmektedir. Teknoloji sektöründen bir çalışma örneği vermek gerekirse, siz ve geliştirici ekibinizin birçok uygulama geliştirdiğinizi düşünün. Gerekli birçok servisi kendi bilgisayarınıza indirmeniz gerekir. Daha sonra bu servisleri yapılandırmanız ve çalıştırmanız gerekecektir. Bu öncelikle büyük bir zaman kaybına neden olacaktır. Hem de ekibinizdekilerin her birinin farklı işletim sistemine sahip bilgisayarları olduğu düşünüldüğünde, bu durum birçok soruna sebep olacaktır.

Container’lar sayesinde servisleri indirirken yaşanan hatalarla karşılaşma süreci önlenmiş olur. Ayrıca zamandan da tasarruf edilmiş olur. Container’lar sayesinde servisleri direk bilgisayarınızın işletim sistemine indirmenize gerek kalmaz. Böylece yapılandırma, çalıştırma gibi gereksiz süreçlerle uğraşmanız gerekmez. Burada önemli olan Docker komutlarına hakim olup gerekli komutları çalıştırmaktır. Tek yapmanız gereken ilgili komut ile container’ı indirmektir.

Docker’ı kurduktan sonra, kullandığınız bütün yazılımların orijinal lisanslı olması gerektiğini unutmayın. Çünkü korsan ve lisanssız yazılım kullanmak, sizi kötü amaçlı yazılım saldırılarına karşı daha fazla risk altına sokar. Yasadışı lisanslı yazılım kullanımı ve korsan sitelerini ziyaret eden veya lisanssız yazılım indiren kişilerin cihazlarına veya ağlarına yönelik kötücül yazılım saldırılarına maruz kalma olasılığı artar.

İstatistiklere göre; crack yazılım, ters proxy, lisanssız yazılım kullanan web siteleri, diğer web sitelerine kıyasla daha fazla risk altındadır. Ayrıca lisanssız panel kullanımı hukuki sonuçlar doğurur. Verilerinizi güvenle korumak için orijinal lisanslı yazılım kullanın ve hizmet aldığınız firmadan orijinal lisans kullandıklarına dair mutlaka kanıtlar isteyin. Detaylı bilgi için buraya tıklayın.

Docker Nasıl Kurulur?

Buraya kadar Docker ile ilgili olarak genel bir bilgiye sahip oldunuz. Sık kullanılan komutlar ve ne işe yaradıklarını gördünüz. Docker’ın sağladığı avantajları da gördükten sonra artık sıra Docker’ ı uygulamalarınız için kullanmaya geldi. 

Docker belli sunucular üzerine kurulabilir. Bunlar, CentosOS 6 , CentosOS 7 ve Ubuntu sunucularıdır. Öncelikle kurulum için sunucunuzda SSH kullanmalısınız ve ” log in ” olmalısınız. Ayrıca sistemi “Root” kullanıcı olarak güncellemelisiniz.

Her sunucu için farklı komutlar vardır. Eğer komutları ayrıntılı bir şekilde incelemek isterseniz Natro firmasının bloğunda yer alan Docker nedir, nasıl kurulur, avantajları nelerdir? isimli yazıdan faydalanabilirsiniz.

Özetleyecek olursak neden Docker kullanmalıyız sorusuna cevap olarak:

  1. Kolay Kullanımı olması: Docker popüler bir teknoloji olmasında kolay bir kullanıma sahip olmasının payı büyüktür.
  2. Daha Verimli Yazılım Dağıtımı: Container’lar taşınabilirdir. Ayrıca bağımsız birimlerdir. Container’ler yazılım dağıtımı açısından da verimlidir.
  3. Mikroservis Mimarisi: Mikro hizmet mimarisi son dönemlerde oldukça popüler hale gelmiştir. Mikro hizmet mimarisinin yaygınlık kazanması da, Docker’ın popülerleşmesini ve yaygın kullanımını sağlamıştır. Docker’ın barındırdığı container’lar mikro hizmet mimarisindeki küçük bölümler için çok verimlidir. Mikroservisler kendi içinde bağımsız çalışabilen ve küçük uygulamalar olarak adlandırılan küçük parçalardan oluşur. Her küçük uygulama için ayrı sanal makine yerine container kullanmak çok verimli ve etkin bir yöntemdir.
  4.  Maliyet Açısından Daha Verimli Olması: Her uygulama için farklı işletim sistemi kullanmak yerine, tek bir işletim sistemi üzerinde çalışabilen binlerce container daha kullanışlıdır. Docker komutlarıyla çok kolay ve hızlı bir şekilde container oluşturulabilir. Container’lar bir process’tir . Docker ile az kaynak ile çok iş yapılabildiğinden maliyet açısından tasarruf sağlar.

Eğer uygulamalarınızın kolay ve hızlı bir şekilde derlenmesini, test edilebilmesini ve dağıtımını yapmak istiyorsanız Docker iyi bir seçim olacaktır. Docker ile yazılım süreçlerinde karşılaşılan pek çok sorunla karşılaşmadan, sorunsuz bir şekilde yazılım süreçlerini halledebilirsiniz. Tabii ki maliyet de önemli bir faktör olarak karşınıza çıkacaktır. Docker ile az kaynak ile çok iş yükü çalıştırabileceksiniz. Docker kullanarak, normal bir sunucuya göre maliyet yönünden oldukça avantajlı durumda olursunuz.

0 Shares:
Benzer İçerikler