5.1 Bağlanmış direktoriyaların (bind mounts) ideyası
Host direktoriyalarının konteynerlərə bağlanmış direktoriyalar (bind mounts) vasitəsilə montaj edilməsi — bu, konteynerlərin host sistemində yerləşən faylları və direktoriyaları birbaşa istifadə etməsinə imkan verən Docker-in güclü funksiyasıdır. Bu, xüsusilə inkişaf, test və sazlama üçün faydalıdır, çünki yerli faylları konteynerə kopyalamadan istifadə etməyə imkan verir. Bu mühazirədə bağlanmış direktoriyalardan necə istifadə olunacağını müzakirə edəcəyik, nümunələr və ən yaxşı təcrübələri təqdim edəcəyik.
Bağlanmış direktoriyalar konkret direktoriyaları və ya faylları host sistemindən konteynerlərə montaj etməyə imkan verir. Bu, Docker tərəfindən idarə olunan və xüsusi direktoriyada saxlanılan volume-lardan fərqlənir.
Bağlanmış direktoriyalardan istifadənin üstünlükləri
- Host fayllarına birbaşa çıxış: Konteynerlər hostda yerləşən faylları birbaşa istifadə edə və dəyişdirə bilərlər.
- İnkişaf rahatlığı: İnkişafçılar faylları hostda dəyişdirə bilər və bu dəyişiklikləri konteynerlərdə real vaxtda görə bilərlər.
- Elastiklik: Hostdakı istənilən direktoriyanı konteynerə montaj etmək olar.
Bağlanmış direktoriyaların montaj əmri
Bağlanmış direktoriyalar konteyner işə salındıqda -v
və ya --mount
parametrlərindən istifadə etməklə montaj edilir.
5.2 -v
parametrlərinin istifadəsinə misallar
1. Host direktoriya-nın konteynerə montaj edilməsi
Host direktoriya-nın konteynerə montaj olunmasının sadə nümunəsi:
docker run -d --name my_container -v /path/on/host:/path/in/container nginx
Bu nümunədə host-da olan /path/on/host
direktoriya nginx konteynerinin içindəki /path/in/container
direktoriyasına montaj edilir.
2. Host fayl-nın konteynerə montaj edilməsi
Ayrıca müstəqil faylları da montaj edə bilərsiniz:
docker run -d --name my_container -v /path/on/host/config.conf:/etc/nginx/nginx.conf nginx
Bu nümunədə host-da olan config.conf konfiqurasiya faylı nginx konteynerinin içindəki nginx.conf konfiqurasiya faylı kimi montaj edilir.
5.3 --mount
parametrlərinin istifadəsinə nümunələr
--mount
parametri, fərqli parametrlər göstərmə imkanı ilə bağlanmış direktoriyaların montajı üçün daha ətraflı bir üsul təqdim edir.
1. --mount
-dan istifadə ilə direktoriyanı montaj etmə
docker run -d --name my_container --mount type=bind,source=/path/on/host,target=/path/in/container nginx
Bu nümunə -v
ilə olan əvvəlki nümunəyə oxşardır, amma daha ətraflı sintaksis istifadə edir.
2. Yalnız oxuma rejimində montaj
docker run -d --name my_container --mount
type=bind,source=/path/on/host,target=/path/in/container,readonly nginx
Bu nümunədə direktoriyanın yalnız oxuma rejimində montaj edilməsi göstərilir, bu da konteynerdəki faylların dəyişdirilməsini qarşısını alır.
5.4 Praktik nümunələr
Web tətbiqi hazırlamaq üçün kodların yerləşdiyi direktoriyanı host-dan container-ə mount edə bilərsiniz.
Host-da mənbə kodunun olduğu direktoriyanın yaradılması:
mkdir -p ~/my_web_app
echo "Hello, World!" > ~/my_web_app/index.html
Direktoriyanı mount edərək container-i işə salmaq:
docker run -d --name web_dev -v ~/my_web_app:/usr/share/nginx/html nginx
İndi host-dakı ~/my_web_app direktoriyasında etdiyiniz istənilən dəyişiklik dərhal container-ə təsir edəcək.
Nümunə 2: Konfiqurasiya fayllarının istifadəsi
Host-dan bir direktoriyadan container-ə konfiqurasiya fayllarını mount edə bilərsiniz.
Host-da konfiqurasiya faylı yaradılması:
echo "user www-data;" > ~/nginx.conf
echo "worker_processes auto;" >> ~/nginx.conf
Konfiqurasiya faylını mount edərək container-i işə salmaq:
docker run -d --name nginx_custom -v ~/nginx.conf:/etc/nginx/nginx.conf nginx
Bu nümunədə host-dakı Nginx konfiqurasiya faylı container daxilində istifadə olunur.
5.5 Montaj olunmuş direktoriyaları və faylları yoxlama
Montaj olunmuş direktoriyaların və faylların məzmununu yoxlamaq üçün konteyner daxilində əmrlər yerinə yetirən docker exec komandası istifadə edə bilərsiniz.
Nümunə
Direktoriyanın məzmununu yoxlama:
docker exec -it my_container ls /path/in/container
Faylın məzmununu yoxlama:
docker exec -it my_container cat /path/in/container/config.conf
Bağlanmış direktoriyaları silmək
Bağlanmış direktoriyalar birbaşa Docker tərəfindən idarə olunmur, buna görə də onların silinməsi hostun fayl sistemində həyata keçirilir.
Nümunə
Host üzərində bağlanmış direktoriyanı silmək:
rm -r /path/on/host
GO TO FULL VERSION