08-05-2021, Saat: 23:59
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.
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.

