Sobes.tech
Junior

Wat wordt er binnen een Docker-container gebruikt?

sobes.tech AI

Antwoord van AI

Docker-container gebruikt een reeks technologieën voor proces- en resource-isolatie:

  • Namespaces van de Linux-kernel: Bieden isolatie voor verschillende systeembronnen, zoals:

    • PID (Proces-ID): Scheiden processen af.
    • Net (Netwerk): Scheiden de netwerkstack af.
    • Mount (mnt): Scheiden de mountpunten van het bestandssysteem af.
    • UTS (Unix Timesharing System): Scheiden de hostnaam en domeinnaam af.
    • IPC (Interprocess Communication): Scheiden de mechanismen voor interprocescommunicatie af.
    • User (Gebruiker- en Groeps-ID): Scheiden gebruikers- en groepsidentificaties af.
  • Controlgroepen (cgroups): Beheren en beperken het gebruik van hardwarebronnen voor processen binnen de container, waaronder:

    • CPU: Beperking van CPU-gebruik.
    • Memory: Beperking van het gebruik van RAM.
    • Block I/O: Beperking van de bandbreedte voor schijfinvoer- en uitvoer.
    • Net I/O: Beperking van de bandbreedte voor netwerk-invoer- en uitvoer.
  • Union-bestandssystemen: Bieden een gecombineerd bestandssysteem dat uit meerdere lagen bestaat. Docker gebruikt bestandssystemen zoals OverlayFS, AUFS, Btrfs, ZFS. Dit maakt efficiënt beheer van het opslaan van images mogelijk en het creëren van lagen alleen voor wijzigingen.

  • Docker Daemon-proces: Beheert de levenscyclus van containers (aanmaken, starten, stoppen, verwijderen).

  • Container-runtime: Laag-niveau uitvoering van de container. Docker heeft verschillende runtimes gebruikt en ondersteunt deze, zoals runc (OCI-specificatie), containerd.

  • Container-image: Een verzameling van lagen van het bestandssysteem en metadata die nodig zijn om de applicatie uit te voeren.

  • Toepassing: Uitvoerbare code, bibliotheken, afhankelijkheden en configuratiebestanden die de eigenlijke programma vormen dat binnen de container draait.

Kortom, een container is een geïsoleerd proces (of set processen) dat draait in een beperkte omgeving, geleverd door de Linux-kernel en beheerd door Docker.