Wykorzystanie pamięci podręcznej kompilacji
Optymalizuj czas budowania obrazów Docker, poznając mechanizm pamięci podręcznej kompilacji Docker i skutecznie go wykorzystując.
Wykorzystanie pamięci podręcznej kompilacji to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Szybsze tworzenie dzięki buforowaniu
Tworzenie obrazów Docker może zająć trochę czasu, szczególnie w przypadku złożonych aplikacji. Pamięć podręczna kompilowania Docker to inteligentna funkcja, która znacznie przyspiesza ten proces!
Działa poprzez ponowne używanie warstw z poprzednich kompilacji, dzięki czemu Docker nie musi za każdym razem tworzyć wszystkiego od podstaw.

Tworzenie warstwa po warstwie
Podczas tworzenia obrazu Docker za pomocą pliku Dockerfile Docker wykonuje każdą instrukcję wiersz po wierszu.
- Każda instrukcja, taka jak
FROM,RUNlubCOPY, tworzy nową „warstwę” obrazu. - Warstwy te są nakładane jedna na drugą, tworząc obraz końcowy.
Sprawdzanie pamięci podręcznej Docker
Przed wykonaniem instrukcji Docker sprawdza, czy wcześniej utworzył już dokładnie tę samą warstwę. Porównuje:
- Samą instrukcję (np.
RUN apt update). - „Kontekst” określonych instrukcji (np. pliki kopiowane za pomocą
COPY).
Jeśli znajdzie pasującą warstwę, Docker ponownie używa jej z pamięci podręcznej zamiast ponownie wykonywać instrukcję.
Unieważnianie pamięci podręcznej
Pamięć podręczna jest bardzo przydatna, ale nie zawsze jest używana. Jeśli Docker wykryje jakąkolwiek zmianę w instrukcji lub jej kontekście, unieważnia pamięć podręczną dla tej warstwy i wszystkich kolejnych warstw.
Oznacza to, że Docker rozpocznie tworzenie od tego miejsca, ignorując wszystkie zapisane w pamięci podręcznej warstwy znajdujące się niżej.
Inteligentne porządkowanie instrukcji
Aby maksymalnie zwiększyć liczbę trafień pamięci podręcznej, należy uporządkować instrukcje w pliku Dockerfile od tych, które najrzadziej się zmieniają, do tych, które zmieniają się najczęściej.
- Najpierw stabilne zależności: Należy zainstalować pakiety systemowe lub zależności aplikacji, które rzadko się zmieniają.
- Na końcu kod aplikacji: Kod źródłowy aplikacji, który często się zmienia, należy kopiować możliwie najpóźniej.
Kolejność zapewniająca trafienia pamięci podręcznej
Spójrzmy na przykład. Umieszczając polecenie RUN pip install (które zazwyczaj zmienia się rzadziej) przed COPY . . (które zmienia się przy każdej aktualizacji kodu), Docker może ponownie używać warstwy zależności.
Załóżmy, że plik requirements.txt zawiera flask i gunicorn, a app.py jest główną aplikacją.
Dockerfile:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
CMD ["python", "app.py"]Jeśli zmieni się tylko app.py, Docker utworzy ponownie jedynie ostatnie warstwy COPY i CMD, oszczędzając czas!
Wybiórcze kopiowanie za pomocą .dockerignore
Podczas używania COPY . . Docker sprawdza zmiany w każdym pliku kontekstu kompilowania. Nawet małe, nieistotne pliki (takie jak foldery .git lub lokalne dane testowe) mogą unieważnić pamięć podręczną.
Należy użyć pliku .dockerignore, aby wykluczyć niepotrzebne pliki i katalogi z kontekstu kompilowania. Dzięki temu nie będą one powodować unieważnienia pamięci podręcznej.
.dockerignore w praktyce
Umieść plik o nazwie .dockerignore w katalogu głównym kontekstu kompilowania (obok pliku Dockerfile).
Przykład pliku .dockerignore:
.git
.venv
__pycache__
*.log
node_modulesOd tej pory podczas wykonywania COPY . . Docker będzie ignorować te pliki, co zwiększy prawdopodobieństwo trafień pamięci podręcznej!
Kiedy pominąć pamięć podręczną
Czasami konieczne jest utworzenie wszystkiego od nowa z pominięciem całej pamięci podręcznej. Może to być przydatne podczas debugowania lub aby mieć pewność, że używane są absolutnie najnowsze wersje zależności.
Możesz wymusić ponowne utworzenie obrazu przez Docker bez używania pamięci podręcznej, dodając flagę --no-cache do polecenia kompilowania:
docker build --no-cache -t my-app:latest .Sprawdzanie optymalizacji pamięci podręcznej
Tworzysz obraz Docker dla aplikacji Node.js. Obecny plik Dockerfile wygląda tak:
FROM node:16-alpine
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]Jaka zmiana najlepiej zoptymalizuje ten plik Dockerfile pod kątem buforowania kompilowania?
Podsumowanie: opanuj pamięć podręczną!
Świetnie! Wiesz już, jak wykorzystywać pamięć podręczną kompilowania Docker do szybszego tworzenia obrazów.
- Docker tworzy obrazy warstwa po warstwie, ponownie używając zapisanych warstw, gdy jest to możliwe.
- Zmiana w instrukcji lub jej kontekście unieważnia pamięć podręczną od tego miejsca.
- Aby zoptymalizować proces, uporządkuj instrukcje od tych, które najrzadziej się zmieniają, do tych, które zmieniają się najczęściej.
- Używaj
.dockerignore, aby wykluczać nieistotne pliki z kontekstu kompilowania. - W razie potrzeby użyj
--no-cache, aby wymusić utworzenie obrazu od nowa.
Wydajne buforowanie przyspiesza cykle tworzenia aplikacji i umożliwia sprawniejsze wdrażanie!
Często zadawane pytania
Czy lekcja „Wykorzystanie pamięci podręcznej kompilacji” jest bezpłatna?
Tak — pełny tekst „Wykorzystanie pamięci podręcznej kompilacji” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Wykorzystanie pamięci podręcznej kompilacji”?
Optymalizuj czas budowania obrazów Docker, poznając mechanizm pamięci podręcznej kompilacji Docker i skutecznie go wykorzystując. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Wykorzystanie pamięci podręcznej kompilacji”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Wielostopniowe kompilacje zwiększające wydajność
- Wykorzystanie pamięci podręcznej kompilacji
- Najlepsze praktyki bezpieczeństwa Dockerfile
- Minimalizowanie rozmiaru obrazu za pomocą baz Slim i Distroless