Wat is een afbeelding in de context van containerisatie en welke niveaus (lagen) bestaan er in een afbeelding?
sobes.tech AI
Antwoord van AI
Een afbeelding (of image) in containerisatie is een onveranderlijk, lichtgewicht, zelfstandig, uitvoerbaar softwarepakket dat alles bevat wat nodig is om een applicatie uit te voeren: code, runtime-omgeving, systeemhulpmiddelen, bibliotheken en configuraties. Het is in wezen een "momentopname" van het bestandssysteem en de configuratie waaruit containers worden gemaakt.
De niveaus (lagen) van de afbeelding zijn aparte, alleen-lezen bestandssystemen die de afbeelding vormen. Elke laag vertegenwoordigt een set wijzigingen ten opzichte van de vorige laag. Ze worden bovenop elkaar gebouwd en vormen een volledig bestandssysteem van de afbeelding. Voordelen van lagen:
- Efficiëntie: Lagen worden in cache opgeslagen en hergebruikt tussen afbeeldingen, wat de schijfruimte vermindert en de bouw versnelt.
- Modulariteit: Wijzigingen in de applicatie of het basissysteem beïnvloeden alleen de bovenste laag, zonder de onderliggende te beïnvloeden.
- Delen: Meerdere afbeeldingen kunnen gedeelde basislagen gebruiken, zoals de laag van het besturingssysteem.
Typische structuur van lagen:
- Basislaag: Bevat vaak een minimale afbeelding van het besturingssysteem (bijvoorbeeld Alpine, Ubuntu Base).
- Afhankelijkheidslagen: Voeg pakketten toe zoals bibliotheken, interpreters (bijvoorbeeld Python, Node.js).
- Applicatielaag: Voeg de code van de applicatie toe.
- Configuratie/metagegevenslaag: Beschrijft hoe de applicatie moet worden gestart (ENTRYPOINT, CMD).
Elke instructie in Dockerfile creëert meestal een nieuwe laag van de afbeelding. Bijvoorbeeld, de opdracht RUN voert commando’s uit en slaat het resultaat op als een nieuwe laag.
# Basislaag
FROM ubuntu:latest
# Afhankelijkheidslagen
RUN apt-get update && apt-get install -y curl
# Applicatielaag
COPY . /app
WORKDIR /app
# Configuratie
CMD ["node", "app.js"]