Sobes.tech
Junior

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 RUN təlimatı ayrı bir qatdır. Əmrləri && ilə birləşdirərək tək RUN tə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 CMDENTRYPOINT 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.