Images verkleinen met Slim- en Distroless-bases
Verklein uiteindelijke images door minimale base-images te kiezen, buildtools te verwijderen en distroless- of scratch-bases te gebruiken voor snellere downloads en een kleiner aanvalsoppervlak.
Images verkleinen met Slim- en Distroless-bases is een gratis DevOps-bootcamp-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject DevOps-bootcamp. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus DevOps-bootcamp bevat in totaal 4 lessen.
Waarom de grootte van images belangrijk is
Kleinere images worden sneller binnengehaald, starten sneller, kosten minder opslagruimte en stellen minder pakketten bloot aan aanvallers. Grootte optimaliseren levert zowel betere prestaties als meer veiligheid op.
Een slanke basis kiezen
Standaardimages zijn handig, maar zwaar. Door node:20 (~1GB) te vervangen door node:20-slim of node:20-alpine kun je direct honderden megabytes besparen.
FROM node:20-slimAfwegingen bij Alpine
Alpine is klein, maar gebruikt musl libc in plaats van glibc, waardoor systeemeigen binaire bestanden soms niet meer werken. Test zorgvuldig; soms is -slim de veiligere kleine optie.
FROM python:3.12-alpineRUN-lagen combineren
Elke RUN voegt een laag toe. Koppel gerelateerde opdrachten en ruim in dezelfde laag op, anders blijven de verwijderde bestanden de eerdere laag groter maken.
RUN apt-get update \
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/*.dockerignore gebruiken
Een .dockerignore-bestand houdt overbodige bestanden buiten de buildcontext: node_modules, .git en logboeken. Een kleinere context betekent snellere builds en kleinere lagen.
# .dockerignore
.git
node_modules
*.logSamenvatting van builds met meerdere stadia
Bouw in één stadium met alle compilers en kopieer daarna met COPY --from alleen het buildartefact naar een schoon eindstadium. De gereedschapsketen wordt niet meegeleverd.
FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app
FROM alpine:3.20
COPY --from=build /src/app /appMaak kennis met Distroless
Distroless-images bevatten alleen je applicatie en de runtimeomgeving - geen shell, geen pakketbeheerder en geen extra binaire bestanden. Ze zijn klein en moeilijk uit te buiten.
FROM gcr.io/distroless/static-debian12
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]Geen shell, geen probleem
Distroless heeft geen shell, dus RUN-opdrachten en docker exec sh werken niet. Voer alle configuratie in eerdere stadia uit; gebruik de tag :debug wanneer je in de image moet kijken.
De scratch-basis
Voor volledig statische binaire bestanden (Go, Rust) bevat FROM scratch niets anders dan je uitvoerbare bestand - vaak in totaal slechts enkele megabytes.
FROM scratch
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]Je verbeteringen meten
Gebruik docker images om groottes te vergelijken en docker history om te zien welke lagen het grootst zijn. Optimaliseer eerst de grootste lagen.
docker history myapp:latestVersies vastzetten, niet latest
Door een specifieke tag of digest vast te zetten, worden builds reproduceerbaar en voorkom je onverwachte sprongen in grootte wanneer een upstream-latest verandert.
FROM node:20.11.1-slimSnelle controle
Wat is bijzonder aan een distroless-image?
Samenvatting
Je kunt images nu flink verkleinen:
- Kies
-slim-,-alpine-, distroless- ofscratch-basisimages - Combineer en ruim
RUN-lagen op; gebruik.dockerignore - Builds met meerdere stadia verwijderen de gereedschapsketen
- Meet met
docker historyen zet versies vast
Kleinere images betekenen snellere en veiligere implementaties.
Leer DevOps-bootcamp met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 142
- Lessen
- 568
Veelgestelde vragen
Is de les “Images verkleinen met Slim- en Distroless-bases” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad DevOps-bootcamp, waaronder “Images verkleinen met Slim- en Distroless-bases”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus DevOps-bootcamp bevat in totaal 4 lessen.
Wat leer ik in “Images verkleinen met Slim- en Distroless-bases”?
Verklein uiteindelijke images door minimale base-images te kiezen, buildtools te verwijderen en distroless- of scratch-bases te gebruiken voor snellere downloads en een kleiner aanvalsoppervlak. Je oefent met DevOps-bootcamp door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met DevOps-bootcamp te beginnen?
Ervaring vooraf is niet nodig. DevOps-bootcamp op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Images verkleinen met Slim- en Distroless-bases”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over DevOps-bootcamp?
Ja. Elke les over DevOps-bootcamp bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Multi-stage builds voor efficiëntie
- Build caching benutten
- Best practices voor Dockerfile-beveiliging
- Images verkleinen met Slim- en Distroless-bases