Kuidas Dockerfile mõistab, et pärast käskluse 'yum update' täitmist on vaja vahemälu tühjendada?
sobes.tech AI
Vastus AI-lt
Docker salvestab pildi kihid, mis põhinevad Dockerfile käskude sisul ja nende kontekstis. Kui käsk yum update käivitatakse, vaatab Docker käskurea ja failide konteksti, mis mõjutavad selle täitmist.
Kui yum update käsk muudab süsteemi olekut (näiteks uuendab pakette), kuid Dockerfile'is käsk ei muutu, kasutab Docker vaikimisi eelneva kihi vahemälu, kuna see ei näe käskluses muudatusi.
Vahemälu tühjendamiseks pärast yum update tehakse tavaliselt järgmist:
- Ühendada muutvad käsud üheks RUN-ks, et paremini kontrollida vahemälu.
- Lisada käske pakihalduri vahemälu puhastamiseks (näiteks
yum clean all), et vähendada kihi suurust. - Kui soovite sunniviisiliselt vahemälu tühjendada, saate muuta käsku (näiteks lisades argumenti koos praeguse kuupäeva või muutuja), et Docker seda uutena arvaks ja kihte uuesti ehitaks.
Näide:
RUN yum update -y && yum clean all
Sunniviisiliselt vahemälu tühjendamiseks:
ARG CACHE_DATE=2024-06-01
RUN yum update -y && yum clean all
CACHE_DATE väärtuse muutmine põhjustab Dockeril selle kihi uuesti ehitamise, kuna käsk on nüüd erinev.
Sel viisil mõistab Docker, et vahemälu tuleb tühjendada, kui käskude tekst või kontekst muutub, mitte sisemiste süsteemi oleku muutuste tõttu.