Image-lager och optimering
Upptäck hur Docker-images är uppbyggda i lager och tillämpa tekniker för att optimera bildstorlek och byggtider.
Image-lager och optimering är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 3 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 DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Avbildningslager: byggblock
Docker-avbildningar är inte en enda enorm fil. I stället byggs de upp av en serie skrivskyddade lager. Tänk på lagren som genomskinliga skikt staplade på varandra.
Varje lager representerar en ändring i avbildningen, vilket gör avbildningar effektiva och flexibla. Den här lagerindelningen är grundläggande för hur Docker fungerar.

Dockerfilens instruktioner och lager
När ni skriver en Dockerfile skapar nästan varje instruktion ett nytt lager ovanpå det föregående. Instruktioner som FROM, RUN, COPY och ADD bidrar alla till att skapa nya lager.
Docker kör dessa instruktioner sekventiellt och bygger varje nytt lager utifrån det föregående lagrets tillstånd.
Granska avbildningens historik
Ni kan se lagren som utgör en avbildning med kommandot docker history. Kommandot visar varje instruktion, dess storlek och när den skapades, vilket hjälper er att förstå hur avbildningen växte.
Det här är ett kraftfullt verktyg för att felsöka problem med avbildningens storlek.
docker history my-image:latestKraften i lagercachelagring
Docker använder en smart byggcache. Om en instruktion i er Dockerfile och dess kontext (till exempel filer som kopieras) inte har ändrats sedan det senaste bygget återanvänder Docker det befintliga lagret.
Den här återanvändningen snabbar upp efterföljande byggen avsevärt, eftersom Docker inte behöver köra oförändrade steg igen.
Optimering 1: Smart lagerordning
Ordningen på instruktionerna i er Dockerfile är avgörande för effektiv cachelagring. Placera instruktioner som ändras sällan (till exempel installation av systemberoenden) högst upp.
Instruktioner som ändras ofta (till exempel kopiering av applikationskoden) bör placeras längre ned. På så sätt kan Docker återanvända cachade lager för stabila beroenden om det bara är koden som ändras.
Exempel: Optimera lagerordningen
Jämför de här två Dockerfile-utdragen. Den goda ordningen placerar stabila beroenden först, så att Docker kan cacha dem och bara bygga om lager för den applikationskod som ändras.
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "server.js"]Optimering 2: Slå ihop RUN-kommandon
Varje RUN-kommando skapar vanligtvis ett nytt lager. Ni kan minska antalet lager och ofta även den slutliga avbildningens storlek genom att kombinera flera kommandon i en enda RUN-instruktion.
Använd operatorn && \ för att kedja ihop kommandon och göra dem till en enda atomisk lageroperation.
Exempel: Kedja RUN-kommandon
I stället för flera RUN-kommandon kan ni kedja ihop dem med && \. Det skapar ett enda, effektivare lager för alla dessa åtgärder.
FROM ubuntu:latest
RUN apt-get update && \
apt-get install -y curl && \
rm -rf /var/lib/apt/lists/*
CMD ["bash"]Optimering 3: Rensa bort filer
Rensa alltid bort filer som bara behövs under byggprocessen. Till exempel kan pakethanterarens cacher (som apt-get clean) eller tillfälliga byggartefakter öka storleken på avbildningens lager avsevärt.
Om ni rensar bort dem i samma RUN-kommando som skapade dem säkerställer ni att de inte finns kvar i ett tidigare lager.
Snabb kontroll: Optimera avbildningen
Studera följande Dockerfile-utdrag:
FROM alpine:latest
COPY . /app
RUN apk add --no-cache git
RUN apk add --no-cache make
CMD ["sh"]Vilken av följande ändringar skulle optimera den här Dockerfile-filen bäst för mindre avbildningsstorlek och potentiellt snabbare ombyggen?
Sammanfattning: Mindre och snabbare avbildningar
Ni har lärt er att Docker-avbildningar byggs i lager, där varje instruktion ofta skapar ett nytt lager. Att förstå detta är nyckeln till optimering!
- Ordna instruktionerna noggrant för att maximera antalet träffar i byggcachen.
- Kombinera flera
RUN-kommandon till ett för att minska antalet lager. - Rensa bort tillfälliga filer i respektive
RUN-kommando för att hålla lagren små.
De här teknikerna hjälper er att skapa mindre Docker-avbildningar som byggs snabbare, vilket är viktigt för effektiv driftsättning.
Lär dig DevOps-bootcamp 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
- 142
- Lektioner
- 568
Vanliga frågor
Är lektionen ”Image-lager och optimering” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Image-lager och optimering”, 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 DevOps-bootcamp innehåller totalt 4 lektioner.
Vad lär jag mig i ”Image-lager och optimering”?
Upptäck hur Docker-images är uppbyggda i lager och tillämpa tekniker för att optimera bildstorlek och byggtider. Ni övar på DevOps-bootcamp 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 DevOps-bootcamp?
Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp 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 3 av 4.
Hur lång tid tar lektionen ”Image-lager och optimering”?
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 DevOps-bootcamp-lektionen?
Ja. Varje DevOps-bootcamp-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
- Förstå Dockerfiles
- Skapa egna Docker-images
- Image-lager och optimering
- Flerstegsbyggen och mindre avbildningar