Sobes.tech
Middle+

Dockerfile 'yum update' əməliyyatından sonra keşi təmizləmək lazım olduğunu necə başa düşür?

sobes.tech Süni İntellekt

AI-dan cavab

Docker, Dockerfile-dəki əmrlərin məzmununa və kontekstinə əsaslanaraq görüntü qatlarını keşik edir. yum update əmri icra olunduqda, Docker əmrin öz xəttinə və onun icrasına təsir edən fayl kontekstinə baxır.

Əgər yum update əmri sistemi vəziyyətini dəyişdirsə (məsələn, paketləri yeniləsə), lakin Dockerfile-dəki əmrlə dəyişiklik olmasa, Docker standart olaraq əvvəlki qatın keşik yaddaşını istifadə edir, çünki əmrdə dəyişiklik görmür.

yum update sonrası keşik yaddaşını sıfırlamaq üçün adətən aşağıdakı addımlar atılır:

  • Vəziyyəti dəyişdirən əmrləri bir RUN əmri altında birləşdirmək, keşik yaddaşını daha yaxşı idarə etmək üçün.
  • Paket menecerinin keşik yaddaşını təmizləyən əmrlər əlavə etmək (məsələn, yum clean all), qatın ölçüsünü azaltmaq üçün.
  • Əgər keşik yaddaşını məcburi sıfırlamaq istəyirsinizsə, əmri dəyişə bilərsiniz (məsələn, cari tarix və ya dəyişən əlavə etmək), Docker onu yeni hesab edir və qatını yenidən qurur.

Nümunə:

RUN yum update -y && yum clean all

Məcburi keşik yaddaşını sıfırlamaq üçün:

ARG CACHE_DATE=2024-06-01
RUN yum update -y && yum clean all

CACHE_DATE dəyərini dəyişdirmək Docker-ın bu qatını yenidən qurmasına səbəb olacaq, çünki əmrlə artıq fərqlidir.

Beləliklə, Docker əmrin mətnində və kontekstində dəyişiklik olduqda keşik yaddaşını sıfırlamağı başa düşür, daxili sistem vəziyyətindəki dəyişikliklər deyil.