Dockerfile-dəki bütün əmrlər qatlar yaradırmı?
sobes.tech Süni İntellekt
AI-dan cavab
Bəli. Dockerfile-də hər bir təlimat, məsələn, ARG, LABEL, ENV istisna olmaqla, yeni qat yaratır. Bu təlimatlar yalnız meta məlumatlar və ya mühit dəyişənləri əlavə edir və qatın fayl sisteminin məzmununa təsir etmir.
Qatlar yaradan vacib təlimatlar:
- FROM: Yığmanın başladığı əsas görüntü.
- RUN: Konteynerdə əmrlərin icrası. Hər
RUNtəlimatı ayrı bir qatdır. Əmrləri&&ilə birləşdirərək təkRUNtəlimatında toplamaq qatların sayını azalda bilər. - COPY: Faylları və qovluqları ana kompüterdən konteynerə köçürmək.
- ADD: COPY-ə bənzəyir, lakin arxivləri çıxara və URL vasitəsilə faylları yükləyə bilər.
- WORKDIR: Sonrakı təlimatlar üçün iş qovluğunu dəyişdirmək.
- VOLUME: Montaj nöqtəsi yaratmaq.
Qatların nümayişi üçün nümunə:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y nginx
COPY index.html /var/www/html/
WORKDIR /app
CMD ["nginx", "-g", "daemon off;"]
Bu Dockerfile-ın yığılması zamanı, hər bir FROM, RUN, COPY, WORKDIR, CMD (hətta CMD və ENTRYPOINT texniki olaraq fayl sistemində qat yaratmasalar da, konfiqurasiya qatını yaradırlar) öz qatını formalaşdırır və Docker tərəfindən keşikdə saxlanılır. Qatların müxtəlif növləri və onların təsiri:
| Təlimat | Fayl sistemində qat yaradır? | Təsiri |
|---|---|---|
FROM |
Bəli | Əsas görüntü |
RUN |
Bəli | Əmrlərin icrası |
COPY |
Bəli | Faylların köçürülməsi |
ADD |
Bəli | Faylların köçürülməsi (əlavə funksiyalarla) |
WORKDIR |
Bəli | Qovluğun dəyişdirilməsi |
ENV |
Xeyr | Mühit dəyişənlərinin qurulması |
ARG |
Xeyr | Yığma arqumentlərinin təyin edilməsi |
LABEL |
Xeyr | Meta məlumatların əlavə olunması |
VOLUME |
Bəli | Montaj nöqtələrinin təyin olunması |
USER |
Bəli | İstifadəçi seçimi |
EXPOSE |
Xeyr | Portların elan olunması |
ENTRYPOINT |
Xeyr | İcra ediləcək faylın konfiqurasiyası |
CMD |
Xeyr | Konteyner üçün komandanın konfiqurasiyası |
Daha az qat, görüntüləri daha yüngül və yığma prosesini daha sürətli edir, çünki daha yaxşı keşik və görüntü ölçüsünün azaldılması təmin edilir. Dockerfile optimallaşdırması çox vaxt RUN təlimatlarının sayını minimallaşdırmaq və əmrlərin sırasını düzgün tərtib etmək yolu ilə keşi maksimum istifadə etməyə yönəlib.