Skip to main content

Docker ilə bağlı müsahibə sualları və cavabları

Salam dostlar,

Bu məqaləmdə "Docker" haqqında tez-tez verilən (müsahibə tipli) suallar və cavabları təqdim edəcəm. 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 mənbəli 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;


  • Virtualizasiya nədir?


Virtualizasiya kompüterdə yer alan əməliyyat sistemini təqlid (simulyasiya) edən bir platformadır və fiziki infrastruktur (bera metal) üzərindən (ESXI) müxtəlif virtual əməliyyat sistemlərinin yaradılmasını təmin etməklə mərkəzdən idarətməni həyata keçirir;


  • Konteyner (Docker) ilə Virtualizasiyanın fərqi nədir?


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. "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.) əlavə resurslar təyin edildiyi halda, "Docker" konteynerlər bir əməliyyat sistemindən paylanan resursları öz iş yükünün tələbinə əsasən istifadə edə bilir ki, bu da virtualizasiyaya nisbətən "Docker" konteynerlərdə əməliyyat sisteminin həddindan artıq yükə düşməməsi deməkdir;

No alt text provided for this image

  • "Docker" Arxitekturası nədir?

"Docker" "client-server" arxitekturasını istifadə edir 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"-in hansı komponentləri mövcuddur və bəzi komponentlər haqqında izah verə bilərsinizmi?


  1. "Docker Compose" - çox (multi) konteynerli "Docker" tətbiqetmələrini təyin, idarə və istifadə etmək üçün bir vasitədir;
  2. "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;
  3. "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;
  4. "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;
  5. "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. "Docker"-in 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;
  6. "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. "Dockerfile"-ın ümumi instruksiyaları "FROM", "LABEL", "RUN", and "CMD"-dən ibarətdir;

No alt text provided for this image

  • "Docker"-in vacib xüsusiyyətləri hansılardır?

  1. Asan Modelləşdirmə (Easy Modeling)
  2. Versiya nəzarəti (Version control)
  3. Yerləşdirmə (Placement/Affinity)
  4. Tətbiq sürətliliyi (Application Agility)
  5. Tərtibatçı məhsuldarlığı (Developer Productivity)
  6. Əməliyyatın effektivliyi (Operational Efficiencies)


  • "Docker image" nədir?

"Docker image" "Docker" konteynerlərinin yaradılmasına kömək edir və hər bir "Docker image" "Docker" reyestrində yer alır ki, həmin "Docker" reyestr "Docker Hub" adlanır. "Docker Hub"-ı bir növ "repository" kimi də düşünmək olar;


  • Hansı əmr bütün işlək olan (running) "docker" konteynerlərinin siyahısını tərtib edir?

$ docker ps


  • "Docker image"-in konteyner kimi işə salınması hansı əmr vasitəsilə həyata keçirilir?

$ sudo docker run -i -t alpine /bin/bash

  • "Docker"-in hansı vacib "state"-ləri vardır?

  1. Running
  2. Paused
  3. Restarting
  4. Exited


  • Fərz edək ki, 3 konteyner mövcuddur və bu konteynerlərdən işlək vəziyyətdə olan (running) konteynerə daxil olmaq üçün hansı əmr icra edilir?

$ sudo docker exec -it <container id> bash


"Docker" konteynerin hansı "lifecycle" addımları mövcuddur?

  1. Create a container
  2. Run the container
  3. Pause the container (optional)
  4. Un-pause the container (optional)
  5. Start the container
  6. Stop the container
  7. Restart the container
  8. Kill the container
  9. Destroy the container


Dostlar,

Güman edirəm ki, bu məqaləm də maariflənməniz istiqamətində sizə faydalı olar.


Təşəkkür edirəm və uğurlar!


Hörmətlə,

Müəllif

Araz Əhmədov

Comments

Popular posts from this blog

Fayl Bərpa Alqoritmləri

  Salam dostlar, Bu yazımda sizə fayl bərpa proqramlarının (Recuva, Wondershare, EaseUS Data Recovery və s.) faylları bərpa etməsi haqqında bəhs etmək istərdim ki, məhz bu proqramlar silinmiş məlumatların (şəkil, video, sənəd və s.) geri qaytarılması üçün xüsusi alqoritmlərdən istifadə edir. Bu prosesin texniki tərəflərini izah etmək üçün əvvəlcə bir neçə əsas anlayışı bilmək lazımdır: Silinmiş faylların vəziyyəti Əksər fayl sistemlərində (məsələn, NTFS, FAT32, exFAT) fayl silindikdə, həmin fayl fiziki olaraq diskin üzərindən silinmir ki, bu zaman: Fayl sistemində faylın olduğu yer boş olaraq işarələnir və həmin sahə üzərində yeni məlumat yazıla bilməsi üçün icazə verilir; Faylın "metadata"-ları (fayl adı, ölçüsü, yaradılma tarixi və s.) xüsusi strukturlarda saxlanılır (məsələn, NTFS-də MFT / Master File Table). Bu səbəbdən, fayl silindikdən dərhal sonra onu bərpa etmək mümkündür, çünki həmin məlumat fiziki olaraq diskin üzərində qalır. Ancaq yeni məlumat həmin yerə yazıldıqd...

How To Install WordPress On Rocky Linux 9

WordPress is widely recognized as the preferred platform for building websites and blogs due to its ease of use and wide range of customization features. Suppose you’re considering installing WordPress on Rocky Linux, an open-source operating system known for its reliability. In that case, you’ll find the process to be quite straightforward when coupled with the LAMP stack – Linux, Apache, MySQL, and PHP. In the following article, we will guide you through each step of setting up WordPress on Rocky Linux using LAMP, allowing you to get your website or blog up and running smoothly in no time. So, let’s dive into the process! Install WordPress On Rocky Linux 9 Step 1: Update Your System in Rocky Linux Step 2: Installation process of LAMP Step 3: Install WordPress in Rocky Linux 9 Step 4: Configuration of Database Step 5: Configuration of WordPress Step 6: Configuration of Firewall settings Step 7: Log in to WordPress Step 1: Update Your System in Rocky Linux Before installing any new sof...

Fayl şifrələmə vasitələri (Linux)

Salam dostlar, Bu məqaləmdə "linux"-da istifadə olunan bəzi fayl şifrələmə vasitələri (file encryption tools) haqqında bəhs edəcəm. Beləliklə, fayl şifrələməsi nədir və "linux"-da hansı fayl şifrələmə vasitələri mövcuddur? Fayl şifrələməsi mübadilə edilən məlumatların oxunmaz vəziyyətə çevrilməsi prosesidir ki, faylların şifrələnməsi təhlükəsizlik baxımından çox vacibdir. Beləliklə, "linux"-da faylların şifrələməsini həyata keçirən bəzi vasitələr (tools) mövcuddur: "GnuPG (GPG)" "GnuPG" şifrələmə və rəqəmsal imza məqsədləri üçün geniş istifadə olunan pulsuz və açıq mənbəli proqramdır ki, faylları və e-poçtları şifrələmək, eləcə də deşifrə etmək üçün "OpenPGP" standartından istifadə edir. Bu şifrələmə platformasınds əvvəlcə "public key" və "private key" yaradılmalıdır ki, bu zaman "public key" şifrələmə (encrypt), "private key" isə şifrənin açılması (decrypt) üçü...