Salam dostlar.
Bu məqaləmdə sizə "Docker" haqqında bəhs edəcəm. Xatırlayırsınızsa, ötən məqalələrimdən birində sizə "Kubernetes" haqqında (I hissə məqalədə) bəhs etmişdim. Qeyd edim ki, "Kubernetes" haqqında II (2-ci) hissə məqalə də sizə təqdim olunacaqdır. İndi isə məqaləmizə başlayaq. Beləliklə, Docker nədir?
Docker tətbiqlərin, proqram təminatının qurulması və daşınması üçün nəzərdə tutulmuş konteyner tipli açıq bir platformadır. Proqram təminatının qurularaq konteyner vasitəsilə daşınmasını həyata keçirən Docker, tətbiqləri infrastrukturdan ayırır ki, məhz Docker ilə tətbiqlərin idarə edilməsi kimi infrastrukturun da idarə edilməsi mümkün olur. Docker metodologiyalarından yararlanaraq, "production"-da kod yazmaqla tətbiqetmə arasında olan gecikməni əhəmiyyətli dərəcədə azaltmaq mümkündür. Qeyd edim ki, "Kubernetes" kimi Docker də "Go" proqramlaşdırma dilində yazılmış və Docker 2013-cü ildə yaradılmışdır. Docker "Windows", "Linux" və "Mac" əməliyyat sistemlərini, "Java", "C#", "Python", "PHP", "Groovy", "Ruby" və s. proqramlaşdırma dillərini dəstəkləyir. Konteyner texnologiyasına əsaslanan Docker ilə Virtualizasiyanın (VM) fərqi ondan ibarətdir ki, Virtualizasiyada hər VM-in bir əməliyyat sistemi olduğu halda, Docker konteynerlərdə isə bir əməliyyat sistemi mövcud olur və hər bir proqram, tətbiq üçün ayrıca əməliyyat sisteminə ehtiyac duyulmadan bir əməliyyat sistemi mərkəzdən paylanır. Bir sözlə, bir-birilərindən təcrid olunmuş (isolate) formada işləyən Docker konteynerlər bir əməliyyat sistemini istifadə edərək öz aralarında bölüşdürə bilirlər və Docker konteynerlər arasındakı əməliyyat sistemi resurslarının bölüşdürülərək izolyasiyası "namespace"-lər vasitəsilə həyata keçirilir. Əlavə olaraq qeyd edim ki, virtualizasiyaya nisbətən Docker konteynerlər daha az resurs istifadə edə bilir ki, virtualizasiyada hər bir əməliyyat sisteminə kifayət qədər (RAM, CPU, Disk Storage və s.) resurs verildiyi halda, Docker konteynerlər bir əməliyyat sistemindən paylanan resursları öz iş yüklərinin tələbinə əsasən istifadə edə bilir, bu da virtualizasiyaya nisbətən Docker konteynerlərdə əməliyyat sisteminin yüklənməməsi deməkdir. Aşağıda verilən şəkilə diqqət yetirsək virtualizasiya ilə Docker konteynerin fərqini asan şəkildə anlaya bilərik:
Docker Arxitekturası
Docker "client-server" arxitekturasını istifadə edir. Belə ki Docker client konteynerlərin qurulması, istifadəsi və daşınması üçün Docker "daemon" ilə əlaqə qurur ki, bu əlaqə "Unix" və ya şəbəkə interfeysi üzərindən "REST API" vasitəsilə həyata keçirilir. Docker client və daemon eyni sistemdə işləyə, eləcə də Docker client ilə daemon arasında əlaqənin kənardan qurulması da təmin edilə bilir.
Docker haqqında bəzi qısa qeydlər:
Docker Compose - çox (multi) konteynerli Docker tətbiqetmələrini təyin, idarə və istifadə etmək üçün bir vasitədir;
Docker Daemon - Docker daemon (dockerd) Docker API sorğularını dinləyir, Docker obyektlərinə daxil olan image-lər, konteynerlər, şəbəkələr, "volume"-lar və s. idarə edir. Docker xidmətlərinin idarə edilməsi üçün bir daemon digər daemon-lar ilə də əlaqə qura bilir;
Docker Client - Docker istifadəçilərinin Docker ilə qarşılıqlı əlaqəsininin təmin edilməsində əsas rol oynayır. Docker client birdən çox daemon ilə əlaqə qura bilir. Əgər istifadəçi "docker run" əmrini istifadə etdikdə, client bu tipli əmrlərin icrasının həyata keçirilməsini "dockerd"-ə göndərir. Docker əmri Docker API-ni istifadə edir;
Docker Registry - Docker registry public və private olmaqla özündə Docker image-lərini saxlayır. Docker HUB isə hər kəsin istifadə edə biləcəyi bir public "registry"-dir və Docker "default" olaraq Docker Hub-da "image"-lərin paylaşımı və istifadəsi üçün konfiqurasiya edilmişdir. Qeyd edim ki, "docker pull" və ya "docker run" əmrlərini istifadə etdikdə, "image"-lər konfiqurasiya edilmiş registry-dən çıxarılır, "docker push" əmri ilə isə "image"-lər (əksinə olaraq) konfiqurasiya edilmiş registry-yə göndərilir.
Docker CLI - Docker deamon-u ilə əlaqənin yaradılmasına imkan verən və əmrlərin icrasını həyata keçirən bir platformadır. Dockerin quraşdırılması zamanı həm Docker deamon, həm də Docker CLI alətləri bir araya gətirilmiş olur. Docker run əmri, verilmiş bir "image"-dən konteyner yaradır və müvafiq əmrin icra edilməsilə konteynerin işə salınmasını (start-ı) təmin edir;
Dockerfile - Docker "image"-lərinin yaradılması üçün əsas konsepsiyadır və "image"-lərin necə qurulduğunu təsvir edən əmrlərin (konfiqurasiyalar, instruksiylar, source "code"-lar və s.) siyahısını özündə ehtiva edən bir mətn sənədidir. Docker "build" əmri, Dockerfile-ın içərisindəki məzmuna uğun olaraq Docker-ə "image" yaratmağı əmr edir.
Dostlar,
Fikrimcə, Docker haqqında məqaləmin ilk (I) hissəsində bu qədər, növbəti (II) hissədə Docker haqqında daha da nəzəri və praktiki məlumatları sizə təqdim edəcəm. Güman edirəm ki, bu qısa məqaləm bilgilənmə istiqamətində işinizə yarayacaqdır.
Təşəkkür edirəm və uğurlar!
Hörmətlə,
Müəllif
Araz Əhmədov
Comments
Post a Comment