Intensiv DevOps-uddannelse · Lektion

Minimering af image-størrelse med Slim- og Distroless-baser

Gør de endelige images mindre ved at vælge minimale base-images, fjerne buildværktøjer og bruge distroless- eller scratch-baser, så de hentes hurtigere og får en mindre angrebsflade

Lektion 4 af 413 trin

Minimering af image-størrelse med Slim- og Distroless-baser er en gratis Intensiv DevOps-uddannelse-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Intensiv DevOps-uddannelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.

Hvorfor billedstørrelsen er vigtig

Mindre images hentes hurtigere, starter hurtigere, koster mindre at opbevare og eksponerer færre pakker for angribere. Optimering af størrelsen er både en fordel for ydeevnen og sikkerheden.

Vælg et slankt basisimage

Standardimages er praktiske, men tunge. Hvis du skifter node:20 (~1 GB) ud med node:20-slim eller node:20-alpine, kan du med det samme spare hundredvis af megabyte.

FROM node:20-slim

Alpine-kompromiser

Alpine er lille, men bruger musl libc i stedet for glibc, hvilket af og til ødelægger native binærfiler. Test grundigt; nogle gange er -slim den mere sikre lille løsning.

FROM python:3.12-alpine

Kombiner RUN-lag

Hver RUN tilføjer et lag. Kæd relaterede kommandoer sammen, og ryd op i det samme lag, ellers fylder de slettede filer stadig i det tidligere lag.

RUN apt-get update \
 && apt-get install -y curl \
 && rm -rf /var/lib/apt/lists/*

Brug .dockerignore

En .dockerignore-fil holder overflødige filer ude af build-konteksten: node_modules, .git og logfiler. En mindre kontekst betyder hurtigere builds og mindre lagring.

# .dockerignore
.git
node_modules
*.log

Opsummering af flerfaset bygning

Byg i én fase med alle compilere, og brug derefter COPY --from til kun at kopiere artefaktet ind i en ren slutfase. Værktøjskæden følger aldrig med.

FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app

FROM alpine:3.20
COPY --from=build /src/app /app

Mød Distroless

Distroless-images indeholder kun din app og dens runtime – ingen shell, ingen pakkehåndtering og ingen ekstra binærfiler. De er små og svære at udnytte.

FROM gcr.io/distroless/static-debian12
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]

Ingen shell, intet problem

Distroless har ingen shell, så RUN-kommandoer og docker exec sh virker ikke. Udfør al opsætning i tidligere faser, og brug tagget :debug, når du er nødt til at undersøge indholdet.

scratch som basisimage

Til helt statiske binærfiler (Go, Rust) leverer FROM scratch intet andet end dit eksekverbare program – ofte blot nogle få megabyte i alt.

FROM scratch
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]

Mål dine resultater

Brug docker images til at sammenligne størrelser og docker history til at se, hvilke lag der er størst. Optimer de tungeste lag først.

docker history myapp:latest

Fastlås versioner, ikke latest

Hvis du fastlåser et specifikt tag eller en digest, bliver builds reproducerbare, og du undgår pludselige størrelsesstigninger, når et upstream-latest ændres.

FROM node:20.11.1-slim

Hurtigt tjek

Hvad er særligt ved et distroless-image?

Opsummering

Du kan nu gøre images markant mindre:

  • Vælg -slim, -alpine, distroless eller scratch som basis
  • Kæd RUN-lag sammen, og ryd op; brug .dockerignore
  • Flerfasede builds fjerner værktøjskæden
  • Mål med docker history, og fastlås versionerne

Mindre images betyder hurtigere og sikrere implementeringer.

Gratis at komme i gang

Lær Intensiv DevOps-uddannelse med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
142
Lektioner
568

Ofte stillede spørgsmål

Er lektionen “Minimering af image-størrelse med Slim- og Distroless-baser” gratis?

Ja — alle 3 lektioner i læringssporet Intensiv DevOps-uddannelse, inklusive “Minimering af image-størrelse med Slim- og Distroless-baser”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Minimering af image-størrelse med Slim- og Distroless-baser”?

Gør de endelige images mindre ved at vælge minimale base-images, fjerne buildværktøjer og bruge distroless- eller scratch-baser, så de hentes hurtigere og får en mindre angrebsflade Du øver dig i Intensiv DevOps-uddannelse med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Intensiv DevOps-uddannelse?

Der kræves ingen tidligere erfaring. Intensiv DevOps-uddannelse på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Minimering af image-størrelse med Slim- og Distroless-baser”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Intensiv DevOps-uddannelse-lektion?

Ja. Alle Intensiv DevOps-uddannelse-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Multi-stage-builds for effektivitet
  2. Udnyttelse af build-caching
  3. Bedste praksis for Dockerfile-sikkerhed
  4. Minimering af image-størrelse med Slim- og Distroless-baser
← Tilbage til Intensiv DevOps-uddannelse