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 Grunnleggende Docker og DevOps 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 Grunnleggende Docker og DevOps, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Grunnleggende Docker og DevOps 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 Grunnleggende Docker og DevOps 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
- 12
- Leksjoner
- 48
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 Grunnleggende Docker og DevOps, 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 Grunnleggende Docker og DevOps 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å Grunnleggende Docker og DevOps 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 Grunnleggende Docker og DevOps?
Ingen tidligere erfaring er nødvendig. Grunnleggende Docker og DevOps 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 Grunnleggende Docker og DevOps-leksjonen?
Ja. Alle Grunnleggende Docker og DevOps-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