8.1 Docker-də Tag
Taglər və image versiyaları, Docker image-lərin idarə edilməsi və istifadəsində əsas rol oynayır. Tagging, müxtəlif image versiyalarını yaratmağa, tanımağa və idarə etməyə imkan verir, bu da app deployment və yeniləmə prosesini daha çevik və idarəolunan edir. Bu mühazirədə biz taglərin nə olduğu, necə istifadə edildiyi və tagging ilə bağlı hansı ən yaxşı praktika metodlarının tətbiq edilməli olduğunu ətraflı şəkildə öyrənəcəyik.
Docker-də Tag (tag) — image-ə təyin olunan bir etiketdir ki, bu da eyni image-in müxtəlif versiyalarını tanımağa və idarə etməyə imkan verir. Taglər dəyişiklikləri və versiyaları izləmə prosesini asanlaşdırır, fərqli mühitlərdə (develop, test, production) konkret image versiyalarının istifadəsini təmin edir.
Taglərin əsas konsepsiyaları:
- Unikal olması: Tag konkret image versiyasını unikal olaraq tanımağa imkan verir.
- Versiyalaşdırma: Taglər image-lərin versiyalarını ifadə etmək üçün istifadə olunur, məsələn, v1.0, v2.0, latest.
- Çeviklik: Taglər, müxtəlif məqsədlər və development mərhələləri üçün image-lər yaratmağa imkan verir, məsələn
beta
,stable
,prod
.
8.2 Tag-lərin istifadəsi
1. Image yaratmaq zamanı tag-lərin verilməsi
Image üçün tag yaratmaq üçün -t
parametrlərindən istifadə edə bilərsiniz docker build
komandasına əlavə edərək.
Nümunə
Bu nümunədə image üçün myapp
adı və 1.0 tag-ı təyin olunur.
docker build -t myapp:1.0 .
2. Mövcud image-lərə əlavə tag-lər vermək
Mövcud image-lər üçün əlavə tag-lər docker tag
komandası ilə verilə bilər.
Nümunə:
Bu nümunədə myapp:1.0
image-i üçün əlavə latest
tag-ı təyin olunur.
docker tag myapp:1.0 myapp:latest
3. Konteynerləri işə salarkən tag-lərin istifadəsi
Konteyner işə salarkən istifadə etmək istədiyiniz image tag-ını təyin edə bilərsiniz.
Nümunə:
Bu nümunədə myapp
image-i üçün 1.0
tag-ı ilə konteyner işə salınır.
docker run -d myapp:1.0
8.3 Taglama praktikas
Semantik versiyaları istifadə etmək
Semantik versiyalaşdırma (Semantic Versioning) — bu, dəyişikliklərin səviyyəsini anlamağa kömək edən obrazlara versiya təyin etməklə bağlı standart bir praktika.
Semantik versiyalaşdırmanın formatı:
<major>.<minor>.<patch>
Harada:
-
major
: Əsas dəyişikliklər, keçmiş versiyalarla uyğun olmaya bilər. -
minor
: Əvvəlki versiyalarla uyğun olan yeni funksiyalar. patch
: Xətaların düzəldilməsi və kiçik dəyişikliklər.
Nümunə:
docker build -t myapp:2.1.3 .
Əlavə etiketlərdən istifadə
Əlavə etiketlər obrazın vəziyyətini göstərməyə kömək edir, məsələn beta
, alpha
, stable
, prod
.
Nümunə:
docker build -t myapp:1.0-beta .
docker build -t myapp:1.0-stable .
Taglərin yenilənməsi
Obrazı yenilədikdə dəyişiklikləri izləmək üçün taglərin dəyişdirilməsi tövsiyə olunur. latest
tagindən istifadə etmək sonuncu versiyanı göstərmək üçün faydalı ola bilər.
Nümunə:
docker build -t myapp:2.0 .
docker tag myapp:2.0 myapp:latest
8.4 Tag-lərin tətbiq nümunələri
Tag-lərin müxtəlif mühitlərdə istifadəsi nümunələri
Nümunə 1: İnkişaf
İnkişaf üçün tez-tez cari versiyanı və ya inkişaf vəziyyətini göstərən tag-lərlə image-lərdən istifadə edilir.
docker build -t myapp:dev .
docker run -d myapp:dev
Nümunə 2: Test
Test mühitlərində konkret versiyaları və ya beta kimi işarələri göstərən tag-lərlə image-lərdən istifadə etmək olar.
docker build -t myapp:1.1-beta .
docker run -d myapp:1.1-beta
Nümunə 3: Production
Production mühitlərində sabit və yoxlanılmış versiyalardan istifadə etmək vacibdir, bunlar stable, prod və ya semantik versiya kimi tag-lərlə göstərilir.
docker build -t myapp:1.1.0-stable .
docker run -d myapp:1.1.0-stable
8.5 Ən yaxşı təcrübələr
1. Həmişə semantik versiyalaşdırmadan istifadə edin
Bütün görüntülər üçün semantik versiyalaşdırmadan istifadə edin. Bu, dəyişiklik səviyyələrini aydın şəkildə ayırmağa kömək edir və versiya idarəçiliyini yaxşılaşdırır.
2. Aydın və məntiqli taglər istifadə edin
Görüntünün vəziyyətini və ya məqsədini dəqiq əks etdirən taglərdən istifadə edin (məsələn, beta
, stable
, prod
).
3. Production-da latest-dən çəkinin
latest
etiketi inkişaf və test üçün faydalı ola bilər, lakin production-da gözlənilməz dəyişikliklərin qarşısını almaq üçün spesifik versiyalardan istifadə etmək daha yaxşıdır.
4. Taglərin istifadəsini sənədləşdirin
Layihənizdə taglərin necə və hansı məqsədlə istifadə edildiyini sənədləşdirin. Bu, komandanın versiyalaşdırma prosesini daha yaxşı başa düşməsinə kömək edəcək və səhv ehtimalını azaldacaq.
Taglərdən istifadə ilə Dockerfile nümunələri
Nümunə 1: Yaratmaq və tag təyin etmək
# 1.0.0 versiyası üçün Dockerfile
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
Qurmaq və taglamaq üçün komandalar
docker build -t myapp:1.0.0 .
docker tag myapp:1.0.0 myapp:stable
Nümunə 2: Görüntünü yeniləmək və taglamaq
# Yeni funksiya ilə 1.1.0 versiyası üçün Dockerfile
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN rm -rf /app/tests /app/docs ENV NODE_ENV=production
EXPOSE 3000
CMD ["node", "app.js"]
Qurmaq və taglamaq üçün komandalar
docker build -t myapp:1.1.0 .
docker tag myapp:1.1.0 myapp:latest
GO TO FULL VERSION