Containers breken door dankzij Docker

Containers onderschat in datacenters en cloudomgevingen

IT-professionals die in datacenters of cloudomgevingen werken, komen gegarandeerd in aanraking met het begrip containers. Toch worden containers worden nog weinig toegepast in datacenters en cloudomgevingen. Het open source-project Docker kan hierin verandering brengen.

 

Volgens marktonderzoeker Forrester, gebruikt slechts 10 procent van de ondernemingen containers. Volgens tellingen van collega-onderzoeker 451 Research genereerden containers in 2016 slechts een jaarlijkse omzet van 1 miljard dollar. Toch signaleren zij voor de toekomst een groei van 40 procent tot 2,7 miljard dollar in 2020. Maar wat zijn deze containers nu precies? Een container is een licht, standalone uitvoerbaar softwarebestand dat alle informatie bevat om haar taak te kunnen uitvoeren: code, runtime, systeemhulpmiddelen, systeembibliotheken en instellingen. De containersoftware draait altijd op dezelfde manier, ongeacht de omgeving. Containers gaan al terug tot voor de eeuwwisseling.

Docker op Windows 2016 Server (Bron: Microsoft)

De eerste container-technologieën op x86-servers waren FreeBSD, met FreeBSD Jail, en Virtuozzo. Naderhand zijn er allerlei op de Linux-kernel gebaseerde containerproducten bijgekomen. Denk aan OpenVZ, Solaris Zones, HP-UX Containers, Linux Containers (LXC) en Docker. In 2008 adopteerde LXC, op basis waarvan Docker later is gebouwd, de term ‘container’-technolgie. Parallells, Google en Docker hebben daarna gewerkt aan open-source projecten als OpenVZ en LXC om containers door te ontwikkelen en veiliger te maken. Tegelijkertijd ontwikkelde Google zijn eigen open-source container-technologie, Let Me Contain That For You (LMCTFY). Het grappige is dat de meeste eindgebruikers al jaren ongemerkt de Google-containers gebruiken. Iedere keer dat zij Googlefuncties als Search, Gmail, Google Docs gebruiken maken zij nieuwe containers aan.

Voorkeur voor containers

Virtuele machines versus containers

Een veel gebruikte term bij containers is ‘containerisatie’. Dit betekent eigenlijk wat in virtualisatie is op het niveau van het besturingssysteem (OS). Dit in tegenstelling tot virtuele machines (VM’s) die op een hypervisor draaien en elk afzonderlijk een volledig besturingssysteem hebben. VM-hypervisors als Hyper-V, KVM en Xen zijn allemaal op de emulatie van hardware gebaseerd. Ze zijn, in termen van gebruikte systeembronnen, ‘fat’. Containers gebruiken echter een gedeeld besturingssysteem waardoor ze veel efficiënter werken dan hypervisors. In plaats van de hardware te virtualiseren, draaien containers meestal bovenop een enkele Linux-instantie. Maar steeds vaker worden containers ook door niet-Linuxsystemen ondersteund, waaronder Windows Server 2016 en macOS.
Naast de applicatie bevat elke container-imagefile zijn eigen file system, storage, CPU, RAM-geheugen en alle componenten die nodig zijn om de applicatie te kunnen laten draaien. De containerimage kan lokaal, publiek of in een private container repository worden opgeslagen. Bij het opstarten van een containerimage op een host met een compatibel containerplatform, zoals Docker, zal de applicatie draaien zonder dat er een update nodig is van een component op de host. De compactheid en ‘selfsupporting’ maakt dat containers goed overdraagbaar zijn.

Docker

Het open source-project Docker heeft een aantal zaken verbeterd ten opzichte van eerdere container-technologieën. Ten eerste kunnen containers met Docker sneller en veiliger worden toegepast. Docker ondersteunt default alle isolation features die in de Linux kernel beschikbaar zijn. De open source-technologie automatiseert ook de telkens terugkerende setup en configuratie van ontwikkelomgevingen. Ontwikkelaars hoeven geen complexe databases te installeren of configureren. Daarnaast kunnen hetzelfde OS, language run-time omgeving en system libraries, onafhankelijk van de host OS, worden gebruikt.

‘Docker verbetert container- technologie’

Daarnaast werkt Docker samen met andere partijen voor een open-source component libcontainer. Deze samenwerking leverde een ’standaard’ voor containers op. Met Docker kunnen, in vergelijking met andere container- technologieën, ook meer applicaties op dezelfde hardware worden gedraaid. Tot slot zijn Docker-containers eenvoudig in cloudomgevingen toe te passen. De technologie wordt in toenemende mate ondersteund door onder meer IBM Cloud, Microsoft Azure, Rackspace Cloud en vele andere. Microsoft is een partnership aangegaan met Docker om zeker te stellen dat Docker containers ook in de Windows Server 2016 omgeving gaan draaien.

Toekomst

VM’s vormen nog steeds de ruggengraat van de cloudomgevingen en dat zal de komen jaren niet snel veranderen. VM’s en containers hebben beide zo hun voor- en nadelen. In tegenstelling tot containers, starten VM’s langzamer, hebben ze een grotere disk footprint en ze hebben geen directe toegang tot systeemservices. VM’s hebben wel weer belangrijke voordelen. Ze bieden betere beveiliging, ondersteunen de bekende besturingssystemen en applicaties, hebben een uitgebreid arsenaal aan tools en ze bieden een veilige executie-omgeving voor hostcontainers. De container-technologie is nog volop in ontwikkeling en er nog moet nog het nodige gebeuren, zeker op het gebied van beveiliging. Dat wil niet zeggen dat deze technologie geen grote toekomst tegemoet gaat De implementatie daarvan is echter afhankelijk van het type IT-omgeving en de applicaties.

[Dit artikel is eerder gepubliceerd in het Datacenter & Cloud Dossier 2017]

Lees het artikel hier in PDF