Build caching benutten
Optimaliseer Docker-bouwtijden door de Docker-buildcache te begrijpen en effectief te gebruiken.
Build caching benutten is een gratis Docker en de basis van DevOps-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Docker en de basis van DevOps. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Docker en de basis van DevOps bevat in totaal 4 lessen.
Sneller bouwen met caching
Docker-images bouwen kan tijd kosten, vooral bij complexe toepassingen. De buildcache van Docker is een slimme functie die het proces aanzienlijk versnelt!
Docker hergebruikt lagen van eerdere builds, zodat niet telkens alles opnieuw vanaf nul hoeft te worden opgebouwd.

Laag voor laag bouwen
Wanneer je met een Dockerfile een Docker-image bouwt, voert Docker elke instructieregel één voor één uit.
- Elke instructie, zoals
FROM,RUNofCOPY, maakt een nieuwe ‘laag’ in je image. - Deze lagen worden op elkaar gestapeld en vormen samen de uiteindelijke image.
De cachecontrole van Docker
Voordat Docker een instructie uitvoert, controleert het of die exacte laag al eerder is gebouwd. Het vergelijkt:
- De instructie zelf, bijvoorbeeld
RUN apt update. - De ‘context’ voor bepaalde instructies, bijvoorbeeld de bestanden die met
COPYworden gekopieerd.
Als er een overeenkomende laag wordt gevonden, hergebruikt Docker die uit de cache in plaats van de instructie opnieuw uit te voeren.
De cache ongeldig maken
De cache is handig, maar wordt niet altijd gebruikt. Als Docker een wijziging in een instructie of de bijbehorende context detecteert, worden de cache voor die laag en alle daaropvolgende lagen ongeldig gemaakt.
Docker bouwt dan verder vanaf dat punt opnieuw op en negeert alle daaronder gelegen lagen in de cache.
Slimme volgorde van instructies
Rangschik de instructies in je Dockerfile van de minst waarschijnlijke wijzigingen naar de meest waarschijnlijke wijzigingen om zoveel mogelijk cachetreffers te krijgen.
- Stabiele afhankelijkheden eerst: Installeer systeempakketten of afhankelijkheden van de toepassing die niet vaak veranderen.
- Applicatiecode als laatste: Kopieer de broncode van je toepassing, die vaak verandert, zo laat mogelijk.
Volgorde voor cachetreffers
Laten we een voorbeeld bekijken. Door de opdracht RUN pip install, die doorgaans minder vaak verandert, vóór COPY . . te plaatsen, dat bij elke code-update verandert, kan Docker de afhankelijkhedenlaag hergebruiken.
Stel dat requirements.txt flask en gunicorn bevat en dat app.py je hoofdtoepassing is.
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"]Als alleen app.py verandert, bouwt Docker alleen de laatste lagen van COPY en CMD opnieuw op. Dat bespaart tijd!
Selectief kopiëren met .dockerignore
Wanneer je COPY . . gebruikt, controleert Docker elk bestand in de buildcontext op wijzigingen. Zelfs kleine, irrelevante bestanden, zoals .git-mappen of lokale testgegevens, kunnen de cache ongeldig maken.
Gebruik een .dockerignore-bestand om onnodige bestanden en mappen uit je buildcontext uit te sluiten. Zo voorkom je dat ze cache-ongeldigmakingen veroorzaken.
.dockerignore in de praktijk
Plaats een bestand met de naam .dockerignore in de hoofdmap van je buildcontext, naast je Dockerfile.
Voorbeeld van .dockerignore:
.git
.venv
__pycache__
*.log
node_modulesWanneer je nu COPY . . gebruikt, negeert Docker deze bestanden. Daardoor krijg je betrouwbaardere cachetreffers!
Wanneer je de cache overslaat
Soms wil je zeker weten dat alles opnieuw wordt opgebouwd en de cache volledig wordt genegeerd. Dat kan handig zijn bij het opsporen van fouten of wanneer je absoluut de nieuwste versies van afhankelijkheden wilt gebruiken.
Je kunt Docker dwingen om de image opnieuw op te bouwen zonder de cache te gebruiken door de vlag --no-cache aan je buildopdracht toe te voegen:
docker build --no-cache -t my-app:latest .Controle van cacheoptimalisatie
Je bouwt een Docker-image voor een Node.js-toepassing. Je Dockerfile ziet er momenteel zo uit:
FROM node:16-alpine
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]Welke wijziging zou deze Dockerfile het beste optimaliseren voor caching tijdens het bouwen?
Samenvatting: beheers de cache!
Goed gedaan! Je hebt geleerd hoe je de buildcache van Docker kunt benutten om images sneller te bouwen.
- Docker bouwt images laag voor laag en hergebruikt waar mogelijk lagen uit de cache.
- Wijzigingen in een instructie of de bijbehorende context maken de cache vanaf dat punt ongeldig.
- Optimaliseer de volgorde door instructies te rangschikken van minst naar meest waarschijnlijk veranderend.
- Gebruik
.dockerignoreom irrelevante bestanden uit de buildcontext uit te sluiten. - Gebruik
--no-cacheom indien nodig een volledig nieuwe build te forceren.
Efficiënte caching zorgt voor kortere ontwikkelcycli en flexibelere implementaties!
Leer Docker en de basis van DevOps met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “Build caching benutten” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Docker en de basis van DevOps, waaronder “Build caching benutten”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Docker en de basis van DevOps bevat in totaal 4 lessen.
Wat leer ik in “Build caching benutten”?
Optimaliseer Docker-bouwtijden door de Docker-buildcache te begrijpen en effectief te gebruiken. Je oefent met Docker en de basis van DevOps door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Docker en de basis van DevOps te beginnen?
Ervaring vooraf is niet nodig. Docker en de basis van DevOps op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Build caching benutten”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Docker en de basis van DevOps?
Ja. Elke les over Docker en de basis van DevOps bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Multi-stage builds voor efficiëntie
- Build caching benutten
- Best practices voor Dockerfile-beveiliging
- Images verkleinen met Slim- en Distroless-bases