Utnyttja byggcachning
Optimera Docker-byggtider genom att förstå och använda Dockers byggcache effektivt.
Utnyttja byggcachning är en gratis lektion i Grunderna i Docker och DevOps på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Grunderna i Docker och DevOps, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Grunderna i Docker och DevOps innehåller totalt 4 lektioner.
Bygg snabbare med cachelagring
Att bygga Docker-avbildningar kan ta tid, särskilt för komplexa applikationer. Dockers byggcache är en smart funktion som kan snabba upp processen avsevärt!
Den fungerar genom att återanvända lager från tidigare byggen, så att Docker inte behöver bygga om allt från grunden varje gång.

Bygg lager för lager
När Ni bygger en Docker-avbildning med hjälp av en Dockerfile kör Docker varje instruktion rad för rad.
- Varje instruktion, till exempel
FROM,RUNellerCOPY, skapar ett nytt ”lager” i avbildningen. - Dessa lager staplas ovanpå varandra för att bilda den färdiga avbildningen.
Så kontrollerar Docker cachen
Innan Docker kör en instruktion kontrollerar Docker om exakt det lagret redan har byggts tidigare. Följande jämförs:
- Själva instruktionen (till exempel
RUN apt update). - ”Kontexten” för vissa instruktioner (till exempel filerna som
COPYkopierar).
Om ett matchande lager hittas återanvänder Docker det från cachen i stället för att köra instruktionen igen.
Ogiltigförklara cachen
Cachen är användbar, men den används inte alltid. Om Docker upptäcker en ändring i en instruktion eller dess kontext ogiltigförklaras cachen för det lagret och alla efterföljande lager.
Det innebär att Docker bygger om från den punkten och framåt och ignorerar alla cachade lager under den.
Smart ordning på instruktionerna
Maximera antalet cacheträffar genom att ordna instruktionerna i Er Dockerfile från de minst ändringsbenägna till de mest ändringsbenägna.
- Stabila beroenden först: Installera systempaket eller applikationsberoenden som ändras sällan.
- Applikationskoden sist: Kopiera applikationens källkod, som ändras ofta, så sent som möjligt.
Ordning för cacheträffar
Låt oss titta på ett exempel. Genom att placera kommandot RUN pip install (som vanligtvis ändras mer sällan) före COPY . . (som ändras vid varje koduppdatering) kan Docker återanvända beroendelagret.
Anta att requirements.txt innehåller flask och gunicorn, och att app.py är Er huvudapplikation.
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"]Om endast app.py ändras behöver Docker bara bygga om de sista lagren för COPY och CMD, vilket sparar tid!
Selektiv kopiering med .dockerignore
När Ni använder COPY . . kontrollerar Docker varje fil i byggkontexten efter ändringar. Även små, irrelevanta filer, till exempel .git-mappar eller lokala testdata, kan ogiltigförklara cachen.
Använd en fil med namnet .dockerignore för att utesluta onödiga filer och kataloger från byggkontexten. Då förhindrar Ni att de utlöser ogiltigförklaring av cachen.
.dockerignore i praktiken
Placera en fil med namnet .dockerignore i roten av byggkontexten, bredvid Er Dockerfile.
Exempel på .dockerignore:
.git
.venv
__pycache__
*.log
node_modulesNär Ni nu använder COPY . . ignorerar Docker dessa filer, vilket ger mer tillförlitliga cacheträffar!
När cachen bör hoppas över
Ibland vill Ni säkerställa att allt byggs på nytt utan att cachen används. Det kan vara användbart vid felsökning eller när Ni vill säkerställa att Ni har de allra senaste versionerna av beroendena.
Ni kan tvinga Docker att bygga om utan att använda cachen genom att lägga till flaggan --no-cache i byggkommandot:
docker build --no-cache -t my-app:latest .Kontroll av cacheoptimering
Ni bygger en Docker-avbildning för en Node.js-applikation. Er Dockerfile ser för närvarande ut så här:
FROM node:16-alpine
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]Vilken ändring skulle optimera denna Dockerfile bäst för byggcachning?
Sammanfattning: Bli expert på cachen!
Bra jobbat! Ni har lärt Er att använda Dockers byggcache för snabbare byggen av avbildningar.
- Docker bygger avbildningar lager för lager och återanvänder cachade lager när det är möjligt.
- Ändringar i en instruktion eller dess kontext ogiltigförklarar cachen från den punkten.
- Optimera genom att ordna instruktionerna från minst till mest ändringsbenägna.
- Använd
.dockerignoreför att utesluta irrelevanta filer från byggkontexten. - Använd
--no-cacheför att tvinga fram ett nytt bygge när det behövs.
Effektiv cachning leder till snabbare utvecklingscykler och smidigare driftsättningar!
Lär dig Grunderna i Docker och DevOps med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Utnyttja byggcachning” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Grunderna i Docker och DevOps, inklusive ”Utnyttja byggcachning”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Grunderna i Docker och DevOps innehåller totalt 4 lektioner.
Vad lär jag mig i ”Utnyttja byggcachning”?
Optimera Docker-byggtider genom att förstå och använda Dockers byggcache effektivt. Ni övar på Grunderna i Docker och DevOps med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Grunderna i Docker och DevOps?
Du behöver inga förkunskaper. Utbildningen i Grunderna i Docker och DevOps på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Utnyttja byggcachning”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Grunderna i Docker och DevOps-lektionen?
Ja. Varje Grunderna i Docker och DevOps-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Flerstegsbyggen för effektivitet
- Utnyttja byggcachning
- Bästa praxis för Dockerfile-säkerhet
- Minimera avbildningsstorleken med Slim- och Distroless-baser