Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Docker Konteyner Nedir? Çalışma Mantığı Nasıldır.
#1
Docker konusunda bir süredir araştırma ve kullanım için Delphi MVC Services / Ethereum Smart Contract konularını çalıştırma konusuyla ilgileniyorum.
Dockerla ilgili öğrendiklerimi artı ve eksiklerini ufak bir bilgilendirme olarak aktarmak isterim.

Docker bir konteyner oluşturma / taşıma platformudur. 
Konteynerler içerisinde bağlı bulundukları işletim sistemlerinin imajlarından faydalanarak her türlü uygulama (İşletim sistemi destekli)
barındırıp çalıştırabiliyoruz. Docker'larla ilk çalışmaya başladığımda çok ısınamamıştım bu konuya. Delphi dünyasında yeni nesil teknolojilerin
kullanılmasından biraz geri kalındığı için. Fakat Linux ortamında (Windows için Docker artık mevcut) Docker üzerinde çalıştıkca
ciddi bir kolaylık olduğunun farkına vardım. 

Docker Konteynerların içerinde bağlı bulunduğu işletim sisteminin depency (bağımlılık) 'lerini barındıran bir çok uygulama çalıştırabiliyoruz.
Delphi tarafından baktığımızda Servis (SaaS) mimarileri için büyük kolaylık sağlıyor. Yeni geliştirdiğim BackEnd'i DMVC olan Web uygulasının
tüm servis mimarisini Docker üzerinde Host ederek kolayca erişilebilir hale getirdik. Büyük özellikleriden biri Port Yönlendirmesi yapabilmelidir.
örnek olarak xIP'li 80 (default port) portuna gelen yönlendirmeyi istediğimiz bir porta yönlendirerek uygulamanın o portta çalışmasını sağlayabiliyoruz.
(http://37.148.210.90:8080/ adresinde 80 numaralı portta index.html çalışırken 8080 numaralı port bir konteynerdir ve Remix Ethereum çalışmaktadır.)

Docker'ların yaşam döngülerini istediğimiz gibi ayarlamamıza olanak vermektedir. İstersek Foreground istersek Background çalıştırarak, kill durumda 
sonlanmalarını yada yeniden restart olmalarını sağlayabiliyoruz. Örnek olarak background çalışan bir Servis konteyneri her hangi bir durumda Crash
olduğunda aynında Restart=Always moduyla biz fark etmeden Backend yeniden ağaya kalabilmekte. Tabi bu durumların Log'ları tek tek Docker tarafından 
tutuluyor.

Docker imajlarını internetten Pull edebildiğimiz gibi Linux için Derlerdiğimiz bir Serviside İmaj haline getirip Serverimize Push edebiliyoruz.
Imaj'ların kendi bağımlılık kütüphanelerini DockerFile oluşturarak Docker yüklenmeden INSTALL ettiğimizde (Örn: Servisimiz libcurl4-gnutls-dev 'e ihtiyaç
duyuyorsa bunu Docker ayağa kalmadan bu File ile install edebiliyoruz) imajımız sorunsuzda RUN edilip görevini yerine getirebiliyor.

Docker'in VM'lerden ayrıştıran farklı özellikleri var, CPU/RAM kullanımları bir VM'e göre daha az ve Hard/Soft olarak ayarlanabiliyor.
Windows için PowerShell üzerinde WSL / WSL2 kullanarak Ubuntu, Centos yükleyerek denenebilir, ayrıca Windows 'ada artık Docker kurulabiliyor.
Windows'a Docker kurduğunuzda rahatlıkla LocalHost'unuzda test edebiliyorsunuz.

hub.docker.com üzerinden Offical Container'leri inceleyebiliriz. Bu imajları rahatlıkla Pull edip yükleyebiliyoruz. Birçok DB 'ninde imajları mevcut
ama ben Disk Mounth olayı yüzünden Docker üzerinde DB çalıştırma taraftarı değilim. DB'im direk Linux üzerinde sorunsuz şekilde çalışıyor.
DB konusu Docker üzerinde sorun yaratabilecek bir konu, Host Operation System'den Disk Mounth etseniz bile herhangi bir sorundan Docker Kill olduğunda
Diske aktarılmamış verilerin uçma sorunu var. (Tartışılabilir bir konu)

Ayrıca Hub.Docker'da bulunan ve lastest / stable imajların bazıları çalışmıyor. Ethereum BlockChain Development konusunda,
Ethereum/Solc ve Ehtereum/GanacheCLI ile sorunlar yaşadım, Linux üzerinde Node/NPM ile bunları çözdüm ama Docker olarak Run edemedim.
ETH Development konusunda daha yeniyim, yakın zamanda çözerim umarım.

Docker konusunda çok ufakca olan bilgilerimi, konusu forumda fazla geçmediği için paylaşmak istedim.

Daha ileri düzeyde bilgisi olan, bu konuda çalışanlardan farklı yönlerini yaşadıkları sorunları da öğrenmek isterim.

Kısa bir süre sonra Docker Kubernetes konusunda da çalışmaya başlayacağım. Edindiğim ilk önizlenimleride paylaşmaya çalışırım.

Saygılar.
WWW
Cevapla
#2
Çok faydalı bilgiler olmuş. teşekkür ederim.
WWW
Cevapla
#3
VM icinde veri tabani calistirmakla, docker icinde calistirmak arasinda pek fark yok. Suradaki yazimda yer verdigim gibi direk makine uzerinde calistirmak da bazi riskler iceriyor. Onbellek listesi su sekilde:
* İşletim sisteminin ön belleği.
* Sanallaştırma yazılımın ön belleği.
* Sanallaştırma yazılımının çalıştığı işletim sisteminin ön belleği.
* Disk ünitesinin işletim sisteminin ön belleği.
* Disk ünitesinin kontrol kartının ön belleği.
* Fiziksel diskin ön belleği.
Docker bu alandaki cozumlerden sadece biri, farkli alternatifler de var. Hatta kubernates son versiyonunda docker destegini kesecegini acikladi.
Maalesef Docker turu sanallastirma dunyasinda Windows'a yer yok. Bildigim kadariyla sadece GUI icermeyen ozel windows surumleri destekleniyor suan.
Bu tur sanallastirmalar daha cok micro servis mimarisi icin tasarlanmis gibi duruyor ve bu amaca hizmet ediyor.

Ben de bazi noktalar paylasayim:
Ayni image (kaynak)'dan birden fazla node (isletim sistemi) calistirirsaniz diskete kapladigi yer 0 oluyor. Isletim sistemleri dosyalari da ortak kullaniyor, sadece degisen dosyalar takip ediliyor ve isletim sistemine ozgu saklaniyor.
Barindiran isletim sisteminin fonksiyonlari direk kullaniliyor, ram'e direk erisiliyor, islemci sanallistirmasi degil yapilan. Bu nedenle windows ortaminda kullanmak zor, benzer sekilde de linux ortaminda windows calistirilamiyor.
Cevapla
#4
Heart 
Çok faydalı bir post olmuş teşekkür ederiz.









bahisyasal.net
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  OpenAI GPT3 Nedir? Delphi ile Kullanımı Tan Ay 1 242 07-05-2021, Saat: 15:40
Son Yorum: mrmarman
  Şu Arduino nedir? Ne değildir bir bakalım. esistem 33 29.093 17-07-2020, Saat: 22:24
Son Yorum: ysfckr
  MCU (Mikrodenetleyici) nedir? engerex 5 6.283 13-11-2018, Saat: 12:40
Son Yorum: boreas
  Bulut Bilişim Hizmet Modelleri: IaaS, PaaS, SaaS Nedir? Abdullah ILGAZ 0 2.138 10-07-2017, Saat: 15:21
Son Yorum: Abdullah ILGAZ



Konuyu Okuyanlar: 1 Ziyaretçi