Docker

Wat is Docker?

Docker is toch een soort van Virtual Machine?

Als een eerste uitleg aan iemand zonder noemenswaardige ICT kennis zou dit een geldige uitleg kunnen zijn. Echter docker is veel meer dan dat. Of eigenlijk beter gezegd, veel minder dan dat.

Een computer of een server is eenvoudig uit te leggen. Er is de hardware, cpu, memory, hdd etc. Hier draait een besturingssysteem op en dat zorgt ervoor dat verschillende applicaties gebruik kunnen maken van deze hardware.

Een nadeel is dat alle applicaties dezelfde ondersteunende software moeten gebruiken, denk aan deze zelfde java en python versies. Hier komt de Virtual Machine om de hoek kijken. Hierbij wordt de hardware als het ware in stukjes verdeeld en kan je op elk stukje een eigen besturingssysteem zetten en een eigen versie van java en wat er nog meer nodig is.

Wat blijkt echter. Vaak is het besturingssysteem in alle Virtual Machines toch linux. Dus wat als we de middleman kunnen overslaan? En de resources die hiervoor nodig zijn kunnen gebruiken om meer applicaties te draaien? Dan hebben we het over Docker. Of een andere container technologie, in basis werken ze allemaal hetzelfde.

Een besturingssysteem zoals linux bestaat uit meerdere stukken en de kernel is het deel dat communicatie met de hardware mogelijk maakt. En laten nu de meeste linux varianten op dezelfde kernel draaien.

Wat doet Docker?

Wat Docker doet is het verpakken van je applicatie samen met nog een klein beetje randsoftware zoals  java of python en wat hulpprogramma's om met de kernel te communiceren in een pakketje. Dit pakketje noemen we een image. En wanneer dit image gestart wordt, noemen we het een container, en zal de kernel er voor zorgen dat de hardware in afgeschermde stukjes wordt verdeeld er aan wordt toebedeeld.

Waarom kiezen wij voor Docker?

Mede door de grote voordelen omtrent testbaarheid. Op de testmachine draait het hetzelfde als op de pc van de ontwikkelaar, als op de uiteindelijke productie machine.

Er zijn belangrijke afspraken rondom het gebruik van docker: Immutable. Geen persistent storage, tenzij network storage. Kleine specifieke applicaties met duidelijk gedefinieerd doel. Deze afspraken zijn continu in beweging om het gebruik van Docker veiliger en stabieler te maken.

Gevolg van immutable images en data op externe locaties is dat applicaties als wegwerpartikelen gezien kunnen worden. Misdraagt het zich, dan stop je de container en gooi je deze weg. En start je een nieuwe. Dit is het Pets vs Cattle principe.

Containers starten erg snel op. Seconden ipv. minuten voor virtual machines. Het is daarom dus ook niet erg om ‘even’ een nieuwe container op te starten. Sterker nog het is zelfs gebruikelijk om een container te maken die alleen 1 klein taakje uitvoert en dan weer weg is.

Bij voorkeur is het horizontaal schaalbaar en draai je er meerdere instanties van. Dus als er 1 herstart wordt, dan merkt niemand daar iets van. Goed voor de beschikbaarheid. En is er een piek-load dan start je er toch gewoon nog een paar bij.

Pas N-1 versie beheer toe. En upgraden van versies kan on-the-fly zonder dat de beschikbaarheid onderbroken wordt. Canary deployments zijn eenvoudig in te richten. En bij problemen rol je terug naar de laatste stabiele versie.

Dit is allemaal mogelijk door wat werken met containers bied, maar zeker ook door de afspraken die we met zijn allen gemaakt hebben. Wanneer we ons niet aan de afspraken houden, vervliegen de voordelen van Docker als sneeuw voor de zon.

Ga dus niet inloggen in een docker container, configuratie bestanden of environment variabelen aan passen en de processen herstarten. Sla geen belangrijke informatie op op de lokale disk van de server waar de container op draait. Zorg ervoor dat je applicatie in de container draait onder een willekeurige user en met als groep root. Dit maakt je leven makkelijker als je later overgaat op Kubernetes of OpenShift.

 

Meer weten over Trivento's cloud visie? Lees dan hier verder >>


Wij hebben 4 Cloud toppers die jou graag verder helpen!
Neem contact op met onze Docker Experts