Q&A: wat zijn containers?
Wat zijn containers?
Containers zijn een geliefd item in de IT-wereld, en met rede. Ze bieden een oplossing om software te isoleren en in verschillende omgevingen te draaien. Om je dat voor te stellen, kan je de software-variant het best vergelijken met de fysieke containers. In plaats van afzonderlijke goederen op een vrachtschip te gooien, verpakken we ze in metalen laadkisten; zo zijn ze makkelijker te stapelen en uiteindelijk veel eenvoudiger om te vervoeren.
Bij software werkt het op dezelfde manier: software kan, samen met alle dingen die het nodige heeft om te functioneren, verpakt worden in een makkelijk vervoerbaar omhulsel. Die omhulsels kunnen op elke computer draaien, waardoor je niet apart je applicatie, frameworks, bibliotheken of andere code moet vervoeren. Het zit allemaal in één ‘capsule’ vervat.
Het concept leunt min of meer aan bij virtuele machines, alleen zijn containers lichter en sneller. Dat komt omdat ze dezelfde besturingssysteem delen. Virtuele machines zijn ook een manier om code te verpakken en meerdere applicaties te draaien op één systeem, maar steunen elk op een eigen besturingssysteem: het guest-OS. Containers hebben geen eigen OS, en zijn dus afhankelijk van het besturingssysteem van de computer waarop ze draaien: het host-OS.
Waarom zijn containers populair?
Containers zorgen ervoor dat applicaties overal kunnen draaien, op dezelfde manier. Ze maken apps draagbaar of ‘portable’ door ze te bundelen in een container die onafhankelijk is van het OS, platform of andere factoren. Op die manier kan een applicatie zonder problemen van de ene omgeving naar de andere omgeving overgebracht worden, bijvoorbeeld naar een ander toestel, of van test-omgeving naar productie.
Containers hebben in het bijzonder ook enkele voordelen ten opzichte van virtuele machines:
• Het hele systeem is lichter: je kan er meer kwijt op een hostserver;
• Kunnen worden toegevoegd in enkele seconden;
• Er is minder overhead.
Er zijn echter niet alleen pluspunten. Sommigen waarschuwen ook voor veiligheidsrisico’s. Omdat containers onder andere een systeemkernel delen, bestaat er meer gevaar dat pakweg malware zich makkelijker kan verspreiden. Als er zich bijvoorbeeld een kwetsbaarheid bevindt in de kernel, kan deze alle verpakte applicaties in gevaar brengen. Dat is bij virtuele machines veel minder vanzelfsprekend.
Hoe ziet de markt eruit?
Wie container zegt, kan niet naast Docker kijken. ’s Werelds bekendste container-engine loopt op opensource-technologie, en wordt gesteund door leiders als Google, Microsoft, Red Hat en IBM. De technologie op zich is nochtans veel ouder, en werd al gebruikt door veel van de voorgaande.
Bovendien is Docker een van de grootste redenen waarom de container-technologie nu wel aanslaat; door in te zetten op gebruiksgemak, werd het concept mainstream. Behalve Docker vinden we overigens ook andere opensource-engines, zoals LXC, van Linuxcontainers.org en rkt (lees: ‘rocket’) van CoreOS, en betalende versies zoals de Google Container Engine.
Zullen containers de virtuele machines ooit vervangen?
Dat is niet heel waarschijnlijk. Virtuele machines bieden nog steeds een sterkere vorm van isolatie, en zijn volgens sommigen makkelijker te beheren in grote hoeveelheden. Daarnaast is de oude technologie waarop veel bedrijven nog steunen, niet geschikt om in containers te plaatsen, terwijl ze wel verplaatst kunnen worden met behulp van virtuele machines. De twee technologieën zullen elkaar in de toekomst eerder aanvullen dan uitsluiten.