chp:containers

Wat zijn containers ?

Technisch gezien zijn containers geisoleerde processen. Maar wat betekend dat precies en waarom moeten deze processen zo nodig geisoleerd zijn? En wat is dan het verschil met een Virtuele Machine (VM)?

Laten we eerst beginnen met wat containers niet zijn. Containers zijn geen “mini VMs”, door je applicatie in een container te stoppen wordt het geen micro-service. Vaak wordt er een vergelijking gemaakt met zee-containers en met de transport-industrie. In die zin is een applicatie-container inderdaad een container en is een VM het hele schip met de vracht.
Een container is bijvoorbeeld alleen een php worker met alles wat php nodig heeft om te kunnen werken met niets meer en niets minder. Het is geen virtuele server met alles wat daarbij komt kijken. Daardoor kunnen containers veel sneller opgestart en afgesloten worden.

Standaard word er applicatie-processen weinig in de weg gelegd om volledig beslag te kunnen nemen op je hele (virtuele) machine. Want dat is soms is dat ook echt nodig. Het gevolg is dat applicatie-processen elkaar in de weg (kunnen) zitten. Container-processen hebben hun eigen omgeving op het gebied van storage, netwerk, gebruikers, processen en worden qua CPU en geheugenverbruik waar nodig ingeperkt doordat ze in een control-group draaien. In het kort betekend dit dat container-processen elkaar niet zo snel in de weg zullen zitten.

Een ander probleem is dat applicaties soms lastig te reproduceren zijn. Dat komt vooral doordat de omgeving waarbinnen de applicaties draaien traditioneel lastig te reproduceren is. De applicatie-code zelf staat idealiter in een versie-beheer systeem zoals Git, daarmee kun je heel makkelijk de code zelf ergens uitrollen.
Maar dat is alleen maar de code. Een site heeft naast de ruwe code ook natuurlijk een stuk configuratie en infrastructuur nodig om te kunnen werken.

Ontwikkelaars pakken de container in met alles wat ze nodig hebben voor het draaien van de applicatie, hier kunnen ze heel specifiek zijn in welke versies ze nodig hebben en zijn niet meer afhankelijk van wat er al op het systeem staat.

Na het inpakken kunnen ze zelf de container testen op hun machine en vervolgens deze container “shippen” naar het platform waar deze precies hetzelfde draait als op de ontwikkelaars machine.




  • chp/containers.txt
  • Last modified: 2020/05/20 05:30
  • (external edit)