8.1 Virtual disklərlə tanışlıq
Disklərin montajı — bu, Docker-in əsas funksiyasıdır və konteynerlərin host-maşının dataları ilə qarşılıqlı əlaqədə olmasına imkan yaradır. Bu funksiya dataların idarə edilməsində elastiklik və səmərəlilik təmin edir, uzunmüddətli saxlama, konteynerlər arasında data mübadiləsi və ehtiyat nüsxələmə və bərpa proseslərini asanlaşdırır.
Həcmlər (Volumes) Docker-də uzunmüddətli data saxlama mexanizmidir, bu, dataları konteynerlərdən kənarda saxlamağa imkan verir. Həcmlər konteynerlərə montaj olunur və dataların konteynerlərin həyat dövründən asılı olmamağını təmin edir. Hətta konteyner silinsə belə, həcmlərdə saxlanılan məlumatlar qalır.
Əsas növ həcmlər
- Anonim həcmlər (anonymous volumes)
- o Docker konteyner üçün avtomatik olaraq yaradır, əgər açıq şəkildə həcm qeyd olunmasa.
- o Müvəqqəti data saxlamaq üçün istifadə olunur.
- Adlandırılmış həcmlər (named volumes)
- Docker tərəfindən yaradılır və idarə olunur.
- o Bir neçə konteyner tərəfindən istifadə oluna bilər və konteynerlərin dayandırılması və ya silinməsindən sonra da qalır.
- Bağlantı həcmləri (bind mounts)
- o Host-maşındakı kataloqları konteynerdəki kataloqlara bağlayır.
- o Host sistemindəki məlumatlara giriş və inkişaf etdirilməsi üçün istifadə olunur.
Həcmlərin montajı üçün docker run komandasının əsas sintaksisi
-v <host_path>:<container_path>
Sintaksis:
docker run -v <host_path>:<container_path> [OPTIONS] IMAGE [COMMAND] [ARG...]
Həcmlərin montajı üçün əsas parametrlər
1. -v
və ya --volume
parametri
Adlandırılmış həcm və ya bağlantı həcmi yaradır.
Nümunə
docker run -d -v /host/data:/container/data nginx
2. --mount
parametri
Həcmlərin montajı üçün daha fleksibil və geniş imkanlar təqdim edir.
Nümunə
docker run -d --mount type=bind,source=/host/data,target=/container/data nginx
8.2 Həcm yaratmaq və istifadə etmək
1. Adlandırılmış həcmlər
Adlandırılmış həcmlər Docker tərəfindən yaradılır və idarə olunur. Onlar konteynerlərin yenidən başladılması və ya silinməsi arasında saxlanılmalı olan məlumatların uzunmüddətli saxlanması üçün istifadə olunur.
Adlandırılmış həcmin yaradılması
1. Adlandırılmış həcmlər
Adlandırılmış həcmlər Docker tərəfindən yaradılır və idarə olunur. Onlar konteynerlərin yenidən başladılması və ya silinməsi arasında saxlanılmalı olan məlumatların uzunmüddətli saxlanması üçün istifadə olunur.
Adlandırılmış həcmin yaradılması
docker volume create my_volume
Həcm montajı ilə konteynerin işə salınması
Bu nümunədə my_volume
həcmi konteynerin içindəki /data
adlı direktoryaya montaj edilir my_container
. /data
ya yazılmış bütün məlumatlar həcmdə saxlanılacaq və konteyner silindikdən sonra əlçatan qalacaq.
docker run -d -v my_volume:/data --name my_container nginx
2. Anonim həcmlər
Anonim həcmlər Docker tərəfindən avtomatik yaradılır və konkret konteynerə bağlanılır. Onlar konteyner silindikdən sonra saxlanması lazım olmayan müvəqqəti məlumatlar üçün faydalıdır.
Anonim həcm ilə konteynerin işə salınması
Bu nümunədə Docker avtomatik olaraq anonim həcm yaradacaq və onu konteynerin içindəki /data
adlı direktorya montaj edəcək.
docker run -d -v /data --name my_container nginx
3. Qoşulan direktoryalar
Qoşulan direktoryalar host sisteminin direktoryalarını konteynerlərə montaj etməyə imkan verir. Bu, məlumatların konteynerlər və host sistemi arasında paylaşılması üçün, həmçinin inkişaf zamanı, mənbə kodunun host sistemində saxlanıldığı hallarda faydalıdır.
Qoşulan direktorya ilə konteynerin işə salınması
Bu nümunədə host maşınında olan /host/data
adlı direktorya konteynerdəki /container/data
adlı direktoryaya montaj edilir my_container
.
docker run -d -v /host/data:/container/data --name my_container nginx
8.3 Həcmlərin istifadəsi nümunələri
1. Məlumat bazası məlumatlarının saxlanması
Məlumat bazası məlumatlarının saxlanması üçün həcmlərdən istifadə, konteynerin yenidən işə salınması və ya yenilənməsi arasında məlumatların qorunmasını təmin edir.
Nümunə
Bu nümunədə PostgreSQL məlumatları db_data
adlı həcmin içərisində saxlanır, bu da məlumatların konteynerin yenidən işə salınması və ya silinməsi zamanı qorunmasını təmin edir.
docker volume create db_data
docker run -d -v db_data:/var/lib/postgresql/data --name postgres_container postgres
2. Konteynerlər arasında məlumatların birgə istifadəsi
Bəzən məlumatların bir neçə konteyner arasında paylaşılması lazım olur. Həcm bu prosesin asan şəkildə həyata keçirilməsini təmin edir.
Nümunə
Həcm yaradıb iki konteyner işə salaq, onlar bu həcmdən istifadə edəcək. Hər iki konteyner shared_data
adlı həcmdəki məlumatlara çıxış əldə edəcək və bununla məlumat mübadiləsi təmin olunacaq.
docker volume create shared_data
docker run -d -v shared_data:/data --name container1 nginx
docker run -d -v shared_data:/data --name container2 nginx
3. İnkişaf və test
Tətbiqlərin inkişafında host maşının kodu ilə konteyner arasında birgə istifadə üçün dirinqlərdən istifadə faydalıdır. Bu, tərtibatçılara hostdakı kod üzərində işləməsinə, konteynerə isə bu kodu istifadəsinə imkan verir.
Nümunə
Bu nümunədə host maşındakı /path/to/source
adlı direktoriya konteyner içersindəki /app
direktoriya ilə montaj edilir. Bu da dev_container
adlı konteynerə host sistemdən birbaşa olaraq koddan istifadə etməyə imkan yaradır.
docker run -d -v /path/to/source:/app --name dev_container node
8.4 Həcm İdarəsi
Docker həcm idarəsi üçün komandalar təqdim edir ki, bu da həcmləri asanlıqla yaratmağa, silməyə və onlar haqqında məlumatı nəzərdən keçirməyə imkan verir.
1. Bütün həcmlərin baxışı
Bu komanda host maşınında mövcud olan bütün həcmlərin siyahısını göstərəcək.
docker volume ls
2. Həcmdəki məlumatların baxışı
Bu komanda my_volume
həcm haqqında ətraflı məlumat göstərəcək: onun host fayl sistemi üzərindəki yeri və hansı konteynerlərin bu həcmi istifadə etdikləri məlumatlar daxil olmaqla.
docker volume inspect my_volume
3. Həcmin silinməsi
Bu komanda my_volume
adlı həcmi siləcək. Önəmli olan, bu əməliyyatdan əvvəl heç bir konteynerin bu həcmi istifadə etmədiyindən əmin olmaqdır.
docker volume rm my_volume
8.5 Həcmlərin rezerv nüsxəsini yaratmaq
Məlumatların təhlükəsizliyini təmin etmək üçün həcmlərin rezerv nüsxəsini yaratmaq və ehtiyac olduqda onları bərpa etmək vacibdir.
1. Həcmin rezerv nüsxəsini yaratmaq
Bu nümunədə, my_volume
həcminin məzmunu my_volume_backup.tar.gz
faylında arxivlənir və host maşının /backup
kataloqunda saxlanılır.
docker run --rm -v my_volume:/volume -v /backup:/backup busybox tar czf /backup/my_volume_backup.tar.gz /volume
Həcmi bərpa etmək
Bu nümunədə my_volume
həcminin məzmunu my_volume_backup.tar.gz
faylında saxlanılan rezerv nüsxədən bərpa olunur.
docker run --rm -v my_volume:/volume -v /backup:/backup busybox tar xzf
/backup/my_volume_backup.tar.gz -C /volume
GO TO FULL VERSION