CodeGym /Kurslar /Docker SELF /Disklərin və şəbəkələrin montajı

Disklərin və şəbəkələrin montajı

Docker SELF
Səviyyə , Dərs
Mövcuddur

7.1 Həcm montajı

Həcm və şəbəkələrin montajı — Docker Compose-də əsas anlayışlardır, hansı ki, çevik və effektiv çox konteynerli tətbiqlər yaratmağa imkan verir. Volumes (həcm) konteynerlərin xaricində saxlanmalıdır, məlumatların saxlanılması üçün istifadə olunur, şəbəkələr (networks) isə konteynerlər arasında qarşılıqlı əlaqəni təmin edir. Bu mühazirədə həcm və şəbəkələrdən Docker Compose-də necə istifadə edəcəyimizi ətraflı şəkildə nəzərdən keçirəcəyik.

Docker-də həcm məlumatları konteynerlərin xaricində saxlamağa imkan verir və konteynerlər dayandırıldıqdan və ya silindikdən sonra belə məlumatları əlçatan edir. Bu xüsusilə verilənlər bazası məlumatlarını, log fayllarını və digər uzunmüddətli məlumatları saxlamaq üçün çox faydalıdır.

Həcm növləri:

  • Adlandırılmış həcm (Named Volumes): Docker tərəfindən idarə olunur və ev sahibi maşında xüsusi bir qovluqda saxlanılır.
  • Bağlantılı həcm (Bind Mounts): Ev sahibi maşında göstərilmiş bir qovluqdan konteynerə montaj edilir.

Docker Compose-də həcm təyin etmək

Adlandırılmış həcm nümunəsi

Bu nümunədə postgres-data adlı adlandırılmış bir həcm yaradılmışdır, hansı ki, /var/lib/postgresql/data qovluğuna montaj edilir konteynerin daxilində db.

Yaml

version: '3.8'

services:
  db:
    image: postgres:latest
    volumes:
      - postgres-data:/var/lib/postgresql/data
        
volumes:
  postgres-data:

Bağlantılı həcm nümunəsi

Bu nümunədə yerli qovluqlar və fayllar nginx.conf və html montaj olunur web konteynerinə bağlantılı həcm kimi.

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./html:/usr/share/nginx/html

7.2 Şəbəkələrin montajı

Docker Compose-da şəbəkələr konteynerlərin bir-biri ilə əlaqə qurmasına imkan verir. Hər bir konteyner bir və ya bir neçə şəbəkəyə qoşula bilər ki, bu da izolasiya və trafikin idarə edilməsini təmin edir.

Şəbəkə növləri:

  • Körpü şəbəkələri (Bridge): Defolt olaraq konteynerlər körpü şəbəkəsinə qoşulur, bu da onların bir host daxilində qarşılıqlı əlaqəsini təmin edir.
  • Overlay şəbəkələri (Overlay): Docker Swarm klasterində müxtəlif hostlarda işə salınmış konteynerlərin qarşılıqlı əlaqəsi üçün istifadə olunur.
  • Şəbəkə plaginləri (Network Plugins): Daha kompleks konfiqurasiyalar üçün üçüncü tərəf şəbəkə driver-lərini istifadə etməyə imkan verir.

İstifadəçi şəbəkələrinin yaradılması və istifadəsi nümunəsi

Bu nümunədə iki istifadəçi şəbəkəsi front-endback-end yaradılır. app servisi hər iki şəbəkəyə qoşulub, web servisi yalnız front-end-ə, db servisi isə yalnız back-end-ə qoşulub.

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    networks:
      - front-end
        
  app:
    image: myapp:latest
    networks:
      - front-end
      - back-end 
        
  db:
    image: postgres:latest
    networks:
      - back-end
        
networks:
  front-end:
  back-end:

Praktiki məsləhətlər:

  1. Adlandırılmış volum-lardan istifadə: Adlandırılmış volum-lar Docker tərəfindən idarə olunur və məlumatların istifadəsini və idarə olunmasını asanlaşdırır. Adlandırılmış volum-ları eyni vaxtda bir neçə servislərə qoşmaq olar. Məsələn, backend servisi log-ları yazır, monitorinq servisi isə onlara analiz edir və "error" səviyyəli mesajları görəndə xəbər verir.
  2. Şəbəkələrin ayrılması: Bir neçə şəbəkə istifadə etmək, tətbiqin müxtəlif hissələrini izolyasiya etməyə və onların qarşılıqlı əlaqəsini nəzarət etməyə imkan verir.
  3. Konfiqurasiya fayllarının saxlanması: Konfiqurasiya fayllarının montajı üçün bağlı volum-lardan istifadə edin, bu da şəkillərin yenidən yaradılmadan konfiqurasiyanı asanlıqla dəyişməyə imkan verir.
  4. Şəbəkələrin təhlükəsizliyi: Şəbəkələrə çıxışı məhdudlaşdırın ki, yalnız lazımi konteynerlər qarşılıqlı əlaqə qura bilsin, bu da tətbiqin təhlükəsizliyini artırır.

7.3 Həcm və şəbəkələrin istifadəsinə nümunələr

Docker Compose-də həcm və şəbəkələrin istifadəsinə nümunələr

Nümunə 1: Web server və məlumat bazası olan tətbiq

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./html:/usr/share/nginx/html
    networks:
      - webnet
        
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydb
    volumes:
      - db-data:/var/lib/postgresql/data
    networks:
      - webnet
        
volumes:
  db-data:
        
networks:
  webnet:

Bu nümunədə:

  • nginx web serveri və postgres məlumat bazası bir webnet şəbəkəsinə qoşulub, bu onların qarşılıqlı əlaqəsini təmin edir. Əgər şəbəkə birdirsə, onu göstərməyə ehtiyac yoxdur – default şəbəkə yaradılacaq.
  • Məlumat bazasının məlumatları adlandırılmış db-data həcmində saxlanılır, bu isə konteynerlərin yenidən yüklənməsi zamanı onların qorunmasını təmin edir.

Nümunə 2: Bir neçə səviyyəli tətbiq

Yaml

version: '3.8'

services:
  frontend:
    image: myfrontend:latest
    networks:
      - front-tier
      - back-tier
        
  backend:
    image: mybackend:latest
    networks:
      - back-tier
    volumes:
      - backend-data:/var/lib/backend
        
  database:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - db-data:/var/lib/mysql
    networks:
      - back-tier
        
volumes:
  backend-data:
  db-data:
        
networks:
  front-tier:
  back-tier:

Bu nümunədə:

  • İki şəbəkə yaradılıb: front-tierback-tier.
  • frontend xidməti hər iki şəbəkəyə qoşulub, bu ona həm backend, həm də xarici müştərilərlə qarşılıqlı əlaqə qurmağa imkan verir.
  • backend və database xidmətləri yalnız back-tier şəbəkəsinə qoşulublar ki, onların qarşılıqlı əlaqəsi təmin edilsin.
  • backend və database xidmətlərinin məlumatları ayrılmış adlandırılmış backend-data və db-data həcmlərində saxlanılır.
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION