DevOps-bootcamp · leksjon

Minimere imagestørrelsen med Slim- og Distroless-baser

Reduser sluttimagene ved å velge minimale baseimages, fjerne byggeverktøy og bruke distroless- eller scratch-baser for raskere nedlastinger og en mindre angrepsflate.

Leksjon 4 av 413 trinn

Minimere imagestørrelsen med Slim- og Distroless-baser er en gratis leksjon i DevOps-bootcamp på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i DevOps-bootcamp, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i DevOps-bootcamp inneholder totalt 4 leksjoner.

Hvorfor bildestørrelsen er viktig

Mindre images hentes raskere, starter raskere, koster mindre å lagre og eksponerer færre pakker for angripere. Størrelsesoptimalisering gir både bedre ytelse og økt sikkerhet.

Velge et slankt baseimage

Standardimages er praktiske, men tunge. Ved å bytte node:20 (~1GB) med node:20-slim eller node:20-alpine kan De umiddelbart redusere størrelsen med flere hundre megabyte.

FROM node:20-slim

Alpine-kompromisser

Alpine er lite, men bruker musl libc i stedet for glibc, noe som av og til ødelegger for native binærfiler. Test grundig; noen ganger er -slim det tryggere alternativet når De vil ha liten størrelse.

FROM python:3.12-alpine

Slå sammen RUN-lag

Hver RUN legger til et lag. Kjed sammen relaterte kommandoer og rydd opp i det samme laget, ellers vil de slettede filene fortsatt gjøre det tidligere laget større.

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

Bruk .dockerignore

En .dockerignore-fil holder unødvendige filer ute av byggkonteksten: node_modules, .git og logs. Mindre kontekst betyr raskere bygg og mindre lag.

# .dockerignore
.git
node_modules
*.log

Oppsummering av flertrinnsbygging

Bygg i ett trinn med alle kompilatorene, og bruk deretter COPY --from til å kopiere bare artefakten til et rent sluttstadium. Verktøykjeden blir aldri med i det ferdige imaget.

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øt Distroless

Distroless-images inneholder bare applikasjonen og kjøretidsmiljøet – ingen shell, ingen pakkebehandler og ingen ekstra binærfiler. De er små og vanskelige å utnytte.

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

Ingen shell, ingen problemer

Distroless har ingen shell, så RUN-kommandoer og docker exec sh fungerer ikke. Gjør all konfigurering i tidligere stadier, og bruk :debug-taggen når De må undersøke innholdet.

scratch-basisen

For helt statiske binærfiler (Go, Rust) inneholder FROM scratch ingenting annet enn den kjørbare filen – ofte bare noen få megabyte totalt.

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

Mål resultatene

Bruk docker images til å sammenligne størrelser og docker history for å se hvilke lag som er størst. Optimaliser de største lagene først.

docker history myapp:latest

Lås versjoner, ikke latest

Ved å låse en bestemt tag eller digest blir bygg reproduserbare, og De unngår uventede hopp i størrelse når en oppstrøms latest endres.

FROM node:20.11.1-slim

Hurtigsjekk

Hva er spesielt med et distroless-image?

Oppsummering

De kan nå redusere størrelsen på images kraftig:

  • Velg baser med -slim, -alpine, distroless eller scratch
  • Kjed sammen og rydd opp i RUN-lag, og bruk .dockerignore
  • Flertrinnsbygginger fjerner verktøykjeden
  • Mål med docker history og lås versjonene

Mindre images betyr raskere og sikrere distribusjoner.

Gratis å komme i gang

Lær deg DevOps-bootcamp med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
142
Leksjoner
568

Ofte stilte spørsmål

Er leksjonen «Minimere imagestørrelsen med Slim- og Distroless-baser» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien DevOps-bootcamp, inkludert «Minimere imagestørrelsen med Slim- og Distroless-baser», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i DevOps-bootcamp inneholder totalt 4 leksjoner.

Hva lærer jeg i «Minimere imagestørrelsen med Slim- og Distroless-baser»?

Reduser sluttimagene ved å velge minimale baseimages, fjerne byggeverktøy og bruke distroless- eller scratch-baser for raskere nedlastinger og en mindre angrepsflate. Du øver på DevOps-bootcamp med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med DevOps-bootcamp?

Ingen tidligere erfaring er nødvendig. DevOps-bootcamp på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Minimere imagestørrelsen med Slim- og Distroless-baser»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne DevOps-bootcamp-leksjonen?

Ja. Alle DevOps-bootcamp-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Bygg med flere trinn for bedre effektivitet
  2. Utnytte bufring av bygg
  3. Beste praksis for sikkerhet i Dockerfiles
  4. Minimere imagestørrelsen med Slim- og Distroless-baser
← Tilbake til DevOps-bootcamp