1.1 Docker-in yaranma tarixi
İlkin illər və öncədən hazırlıq:Docker-in tarixi onun 2013-cü ildə rəsmi yaranmasından çox əvvəl başlayır. 2000-ci illərin əvvəllərində virtualizasiya artıq məşhur idi, lakin ənənəvi virtual maşınlar böyük resurs tələblərinə və məhdud elastikliyə malik idi. Bu dövrdə konteynerlər anlayışı yeni-yeni formalaşmağa başlayırdı. LXC (Linux Containers) layihələrdən biri idi və Linux kerneli imkanlarına əsaslanan izolyasiya olunmuş konteynerlərin işə salınmasını təmin edirdi.
Fikrin yaranması:Docker dotCloud şirkətinin daxili layihəsi kimi yaradılmışdır. Şirkət 2010-cu ildə Solomon Hykes və Sebastyan Puhls tərəfindən təsis edilmişdi. DotCloud, veb tətbiqlərin yerləşdirilməsi və idarə olunması üçün alətlər təmin edən platforma kimi xidmət (PaaS) təqdim edirdi. dotCloud üzərində işlər görülərkən, komanda tətbiqlərin izolyasiyası və asılılıqların idarə olunması ilə bağlı problemlərlə qarşılaşdı. Beləliklə, bu problemləri həll edə biləcək universal konteyner texnologiyası yaratmaq fikri meydana çıxdı.
İnkişaf və ilk versiya:Docker-in ilk versiyaları Solomon Hykes tərəfindən dotCloud layihəsi çərçivəsində hazırlanmışdı. Docker mart 2013-cü ildə PyCon konfransında rəsmi olaraq elan edildi və tezliklə onun mənbə kodu GitHub-da yayımlandı. İlkin olaraq, Docker LXC (Linux Containers) əsaslı idi, lakin sonradan komanda performans və sistemin elastikliyini artırmaq üçün öz konteyner implementasiyasına keçdi.
Tanınma və icma mühiti:Docker inkişaf etdiricilər və IT mütəxəssisləri arasında sadəliyi və güclü imkanlarına görə sürətlə populyarlaşdı. Elan edildikdən bir neçə ay sonra Docker GitHub-da çoxlu ulduz topladı və aktiv töhfə verən icma cəlb etdi. 2014-cü ildə dotCloud şirkəti adını dəyişərək Docker, Inc. oldu və bu, yeni konteyner platformasının inkişafına yönəldiyini vurğuladı.
Docker-in tarixində əsas hadisələrdən biri onun konsepsiyasının IT bazarının nəhəngləri tərəfindən qəbul edilməsidir. 2014-cü ildə Red Hat, Google və Microsoft kimi şirkətlər Docker-i dəstəkləməyə və onu məhsul və xidmətlərinə inteqrasiya etməyə başladılar. Bu, Docker-in sənayedə sürətlə yayılmasına və konteynerizasiya üzrə de-fakto standart
kimi mövqeyini möhkəmləndirməsinə səbəb oldu.
Docker inkişaf etməyə və investisiyalar cəlb etməyə davam edirdi. 2014-cü ildə şirkət C seriyası maliyyələşdirmə çərçivəsində 40 milyon dollar topladı ki, bu da komandayı genişləndirməyə və inkişafı sürətləndirməyə imkan verdi. Bu dövrdə Docker digər şirkətlərlə fəal əməkdaşlıq etməyə başladı, öz platforması ətrafında ekosistem yaratdı. Docker Compose (çox konteynerli tətbiqlərin idarə olunması üçün) və Docker Swarm (konteynerlərin orkestrasiyası üçün) kimi layihələr işə salındı.
2015-ci ildə Docker Microsoft ilə strateji tərəfdaşlıq elan etdi və bununla Windows Server və Azure-a Docker-in inteqrasiyasını təmin etdi. Bu, konteyner texnologiyasının Linux icmasından kənara yayılması və daha geniş auditoriya üçün əlçatan olması baxımından vacib addım idi.
Rəqabət və standartlaşdırma:Docker-in populyarlığı artdıqca bazarda rəqabət edən layihələr və texnologiyalar meydana çıxdı. 2015-ci ildə Google Kubernetes-i təqdim etdi — konteynerlərin orkestrasiyası sistemi, bu sistem öz elastikliyi və gücü ilə sürətlə populyarlaşdı. Rəqabətə baxmayaraq, Docker və Kubernetes bir-birini tamamlayan texnologiyalar oldular və müasir konteyner infrastrukturasının əsasını təşkil etdilər.
2017-ci ildə Docker Open Container Initiative (OCI) – konteyner formatlarının və onların icra vaxtının standartlaşdırılması üzrə layihəni dəstəkləmək qərarına gəldi. Bu, müxtəlif konteyner platformaları arasında uyğunluğu təmin etməyə və Docker-in digər alətlərlə inteqrasiyasını asanlaşdırmağa imkan verdi.
Müasir vəziyyət və gələcək: Hazırda Docker hələ də inkişaf etdiricilərin və sistem administratorlarının əsas alətlərindən biridir
. Onun ekosistemi Docker Desktop (lokal maşınlarda Docker ilə işləməni asanlaşdırmaq üçün) və Docker Hub (ictimai image reyestri) kimi layihələri əhatə edərək inkişaf etməyə davam edir.
Docker, həmçinin təhlükəsizlik, performans və rahatlığın artırılmasına yönəlmiş texnologiyaları inkişaf etdirməkdə davam edir. Məsələn, Docker Content Trust image-lərin bütövlüyünün və orijinallığının yoxlanışını təmin edir, Docker Scan isə konteynerlərdə zəiflikləri aşkar etməyə imkan yaradır.
1.2 Docker-in əsas konsepsiyaları

Docker konteyneri daxilində işləyən tətbiq baxımından, Docker konteyneri – virtual maşın kimi fəaliyyət göstərir. Amma adi virtual maşınlardan fərqli olaraq, Docker olduqca yüngül bir virtual maşındır. Çünki əslində bu tam hüquqlu bir «virtual maşın» deyil, virtual «virtual maşın»
.
Linux əməliyyat sistemi tətbiqləri bir-birindən o qədər «ayırmağa» imkan verir ki, hər biri öz əməliyyat sistemində işlədiyini düşünür. Real əməliyyat sistemi üzərində işləyən belə xüsusi mühitlər mahiyyətcə konteyner adlanır.
1. İzolyasiya:Docker-in əsas xüsusiyyətlərindən biri tətbiqləri və onların asılılıqlarını izolyasiya etmək qabiliyyətidir. Bu, Linux nüvəsindəki namespaces və cgroups vasitəsilə həyata keçirilir. Namespaces proseslərin izolyasiyasını təmin edərək hər bir konteynerə öz proseslərinə, şəbəkə interfeyslərinə və fayl sisteminə sahib olmağa imkan verir. Digər tərəfdən, cgroups hər konteynerin CPU, yaddaş və disk kimi resurslardan istifadəsini məhdudlaşdırmağa və idarə etməyə imkan verir. Belə bir izolyasiya konteynerləri bir-birindən və host-əməliyyat sistemindən asılısız edir, bu isə təhlükəsizliyi və tətbiqlərin etibarlılığını artırır.
2. Portativlik:Docker tətbiqlərin yüksək səviyyədə portativliyini təmin edir. Bu o deməkdir ki, bir konteyneri istənilən serverdə işə sala bilərsiniz, istər proqramçının lokal kompüteri olsun, istər test mühiti, istərsə də bulud platforması. İcra mühitinin hamısı, o cümlədən tətbiq kodu, asılılıqlar, kitabxanalar və konfiqurasiya faylları konteynerə daxil edilir, bu da mühit uyğunlaşmazlığı ilə bağlı məsələləri aradan qaldırır. Bu proqramçıların bir mühitdə tətbiq yaratmasına və onların hər hansı digər mühitdə dəyişiklik etmədən işləyəcəyinə əmin olmasına imkan verir.
3. Yüngüllük:Hər instans üçün ayrı bir əməliyyat sistemi quraşdırılmasını tələb edən virtual maşınlardan fərqli olaraq, Docker konteynerləri host-əməliyyat sisteminin nüvəsindən istifadə edir. Bu konteynerləri virtual maşınlara nisbətən xeyli yüngül və sürətli edir. Konteynerlər diskin daha az yerini tutur və az yaddaş sərf edir, bu da bir serverdə virtual maşınlarla müqayisədə daha çox konteyneri işlətməyə imkan verir.
4. Docker imicləri: Docker imici — konteynerlərin yaradıldığı şablondur
. Imic tətbiqin işləməsi üçün lazım olan hər şeyi, o cümlədən kod, kitabxanalar, asılılıqlar və konfiqurasiya fayllarını özündə saxlayır. Imicləri sıfırdan yaratmaq mümkündür, bu məqsədlə Dockerfile adlı xüsusi ssenaridən istifadə edilir. Bundan əlavə, Docker Hub adlı ictimai reyestrdə çox sayda hazır imiclər mövcuddur. Docker Hub proqramçıların imicləri paylaşmasına və başqaları tərəfindən yaradılmış imicləri istifadə etməsinə imkan verir.
Docker yerə və resurslara qənaət etməyə imkan verən laylı fayl sistemindən (Union File System) istifadə edir. Hər bir imic bir neçə qatdan ibarətdir, burada hər bir qat əvvəlkindən fərqləri təqdim edir. Məsələn, bir qat baza əməliyyat sistemini, başqası quraşdırılmış kitabxanaları, digəri isə tətbiq kodunu ehtiva edə bilər. Bir konteyner imicdən yaradıldıqda, dəyişiklikləri yazmaq üçün yeni bir qat əlavə edilir, bu ilkin qatlara toxunmur. Bu, şəbəkə vasitəsilə ötürülən məlumatların həcmını azaldır və konteynerlərin yaradılmasını sürətləndirir.
6. Avtomatlaşdırma və orkestrasiya:Docker müxtəlif alətlərdən istifadə edərək tətbiqlərin yığılmasını, test edilməsini və yerləşdirilməsini avtomatlaşdırmağa imkan verir. Docker Compose məsələn, çox konteynerli tətbiqlərin idarə edilməsi üçün istifadə olunur. Onun köməyi ilə bir faylda (docker-compose.yml) tətbiqin işləməsi üçün lazım olan bütün servisləri təsvir edib onları bir əmrlə işə sala bilərsiniz. Böyük klasterlərdə konteynerlərin orkestrasiyası üçün Kubernetes istifadə olunur — konteynerləri idarə etmək üçün güclü bir sistemdir, bu sistem avtomatik miqyaslama, nasazlıqdan sonra bərpa və yük balanslaşdırmanı təmin edir.
1.3 Docker-in tətbiqi
Docker İT sahəsində ən müxtəlif sahələrdə geniş tətbiq tapıb. Budur bəzi nümunələr:
1. İnkişaf və test:Proqramçılar Docker-dən istifadə edərək fərqli izolyasiya olunmuş inkişaf və test mühitləri yarada bilərlər. Bu onlara müxtəlif versiyalı kitabxanalar və frameworks ilə konflikt yaratmadan işləməyə imkan verir. Testçilər avtomatlaşdırılmış testlər keçirmək üçün mühitləri tez bir vaxtda yerləşdirə bilərlər.
2. Davamlı inteqrasiya və yerləşdirmə (CI/CD):Docker davamlı inteqrasiya və yerləşdirmə prosesini asanlaşdırır, belə ki, tətbiq images yarada və hər mərhələdə test edə bilərsiniz. Bu yerləşdirmə prosesini daha etibarlı və proqnozlaşdırıla bilən edir.
3. Mikroservislər:Docker mikroservis arxitekturası üçün idealdır, burada hər bir tətbiq kiçik, müstəqil xidmətlərə bölünür ki, bunlar ayrı-ayrılıqda yerləşdirilə və miqyaslaşdırıla bilər.
4. Bulud hesablama:Docker tətbiqlərin buludda yerləşdirilməsini sadələşdirir, hər bir tətbiqin komponentləri üçün vahid qablaşdırma formatı təqdim edir. Bu tətbiqləri müxtəlif bulud platformaları və lokal serverlər arasında rahat şəkildə köçürməyə imkan yaradır.
Docker-in yaranma tarixi — bu bir yenilik və əməkdaşlıq tarixidir, hansı ki İT sənayesini dəyişib. Kiçik bir startapın daxili təşəbbüsü kimi başlayaraq, Docker qlobal fenomenə çevrildi ki, bu, dünya boyu tətbiqlərin inkişafına və yerləşdirilməsinə təsir etməyə davam edir. Onun yolu — ideyanın həyata keçirilməsi üçün əzmkarlıqla və uzaqgörənliklə necə bütün bir sahəni dəyişdirə biləcəyinə parlaq nümunədir.
GO TO FULL VERSION