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.
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-slimAlpine-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-alpineSlå 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
*.logOppsummering 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 /appMø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:latestLå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-slimHurtigsjekk
Hva er spesielt med et distroless-image?
Oppsummering
De kan nå redusere størrelsen på images kraftig:
- Velg baser med
-slim,-alpine, distroless ellerscratch - Kjed sammen og rydd opp i
RUN-lag, og bruk.dockerignore - Flertrinnsbygginger fjerner verktøykjeden
- Mål med
docker historyog lås versjonene
Mindre images betyr raskere og sikrere distribusjoner.
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
- Bygg med flere trinn for bedre effektivitet
- Utnytte bufring av bygg
- Beste praksis for sikkerhet i Dockerfiles
- Minimere imagestørrelsen med Slim- og Distroless-baser