DevOps-bootcamp · Les

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.

Les 4 van 413 stappen

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-slim

Afwegingen 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-alpine

RUN-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
*.log

Samenvatting 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 /app

Maak 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:latest

Versies 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-slim

Snelle controle

Wat is bijzonder aan een distroless-image?

Samenvatting

Je kunt images nu flink verkleinen:

  • Kies -slim-, -alpine-, distroless- of scratch-basisimages
  • Combineer en ruim RUN-lagen op; gebruik .dockerignore
  • Builds met meerdere stadia verwijderen de gereedschapsketen
  • Meet met docker history en zet versies vast

Kleinere images betekenen snellere en veiligere implementaties.

Gratis beginnen

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

  1. Multi-stage builds voor efficiëntie
  2. Build caching benutten
  3. Best practices voor Dockerfile-beveiliging
  4. Images verkleinen met Slim- en Distroless-bases
← Terug naar DevOps-bootcamp