Het verschil tussen Kubernetes en Docker is een van de belangrijkste onderwerpen voor cloudnative en DevOps. Hoewel Kubernetes en Docker bij elkaar horen, kunnen ze niet zomaar met elkaar worden vergeleken. Kubernetes en Docker zijn eigenlijk geen concurrerende technologieën. Ze moeten worden beschouwd als twee technologieën die elkaar aanvullen en met elkaar samenwerken.
Hoe weet u waar u allemaal mee te maken krijgt? Het is belangrijk om eerst te begrijpen op welke gebieden Kubernetes en Docker elkaar overlappen en waar ze contrasteren.
Docker is een open-source platform voor applicatiecontainers. Een container is een zelfstandige verpakkingsindeling die alle benodigde code en afhankelijkheden in een uitvoerbare indeling plaatst. Een container is als een IKEA-pakket dat alle onderdelen van een bureau bevat, inclusief de poten en schroeven (en uiteraard de inbussleutel). Wanneer u de container uitvoert, wordt het bureau echter ook voor u in elkaar gezet door de container.
Applicatieontwikkelaars kiezen vaak voor Docker vanwege de lichtgewicht en gestandaardiseerde indeling. Hierdoor kunnen ontwikkelaars flexibel en schaalbaar bouwen, testen en implementeren.
Docker heeft ook een andere betekenis in de IT-sector. Er bestaat een echt bedrijf met de naam Docker, Inc. Dit bedrijf ontwikkelt tools voor het platform. Voor het platform en het bedrijf wordt dus dezelfde naam gebruikt.
Als Docker één container is, is Kubernetes een tool waarmee u veel containers tegelijk kunt beheren. Net als Docker (het platform, niet het bedrijf) is Kubernetes een open-source platform, hoewel het door de Cloud Native Computing Foundation wordt beheerd als een project met meer dan 2300 bijdragers. Kubernetes werkt als een besturingssysteem voor de cloud en stroomlijnt en vereenvoudigt het beheer van virtuele machines en clouds zodat IT-afdelingen alles op grote schaal kunnen doen.
Wat kunt u allemaal doen met Kubernetes? Kubernetes werkt hetzelfde voor elk soort systeembeheer op een lokaal systeem, alleen dan op de schaal van een container. Initialisaties, updates, schema's, verwijderingen en algemene statusbewaking vallen allemaal binnen het bereik van Kubernetes. We gebruiken weer de IKEA-analogie. Als een container één bureau is, dan is Kubernetes de faciliteitenbeheerder die verantwoordelijk is voor het bestellen, distribueren en controleren van de status van bureaus, stoelen en andere verpakte meubels in het magazijn van IKEA.
In elke discussie over Docker en Kubernetes ontbreekt vaak de definitie van containerruntimes. Wat is een containerruntime? Een containerruntime is in het kort de motor die de container aandrijft. Als we weer de IKEA-analogie gebruiken, zijn containerruntimes de montage-instructies in de doos. In sommige gevallen is dit eenvoudig en wordt het uitvoeringsbeheer afgehandeld binnen een zogenaamde containerruntime op laag niveau. In meer complexe situaties kunnen containerruntimes op hoog niveau API-integratie, image-indelingen en imagebeheer bieden. In sommige gevallen kan de term containerruntime gelijk staan aan Docker, hoewel de zaak het iets genuanceerder is.
Kubernetes voert een API uit die ook wel CRI (Container Runtime Interface) wordt genoemd. Elke containerruntime maakt gebruik van deze interface om het pakket uit te voeren. Als we nogmaals de IKEA-analogie gebruiken, is CRI van Kubernetes de persoon die de montage-instructies (containerruntime) in de doos (container) leest.
Er zijn naast Docker nog andere containerruntimes. Twee andere populaire containerruntimes zijn:
Containerd: Containerd is gestart als onderdeel van het Docker-project. Het doel was echter om Docker flexibeler en meer modulair te maken. Daarom kozen de ontwikkelaars ervoor om Containerd af te scheiden als hun eigen project. Containerd verwerkt behoeften voor containerruntimes op hoog niveau, zoals het ophalen van images uit registers, imagebeheer en integratie met runtimes op laag niveau om het containerproces uit te voeren.
CRI-O: CRI-O is een ander alternatief voor Docker voor open-source containerruntimes. CRI-O implementeert de Kubernetes CRI (Container Runtime Interface) om runtimes te activeren die compatibel zijn met de standaard van het Open Container Initiative.
Zowel CRI-O als Containerd gebruiken de specificaties van CRI, waardoor ze volledig compatibel zijn met Kubernetes.
Hoewel men het vaak over Docker versus Kubernetes heeft, zijn deze twee technologieën eigenlijk geen concurrerende technologieën. De IKEA-analogie die in dit artikel wordt gebruikt, laat de verwantschap tussen deze technologieën zien en geeft aan waarom ze essentieel zijn voor het uitvoeren van modern IT-beheer zonder dat ze concurrenten van elkaar te zijn. In plaats daarvan maken ze deel uit van het cloudnative ecosysteem. Docker-containers zijn onderdeel van wat Kubernetes beheert en het voordeel van Kubernetes is dat u het volume van Docker-containers eenvoudig kunt schalen.
De vraag is dus niet: kies ik Docker of Kubernetes? In plaats daarvan is de belangrijkste overweging voor IT-managers hoe ze Kubernetes en Docker samen kunnen gebruiken voor beheerprocessen en andere activiteiten.
Kubernetes en Docker zijn ontworpen om samen te werken. Hoewel het niet nodig is om Kubernetes te gebruiken voor het beheren van een Docker-implementatie, zijn deze technologieën samen een effectief hulpmiddel in situaties waarin meerdere implementaties moeten worden beheerd. Dit is met name het geval wanneer meerdere implementaties van dezelfde applicatie worden gebruikt, en wanneer schalen noodzakelijk is. Het open-source karakter van het Kubernetes-orkestratiesysteem zorgt voor een continu ondersteund platform dat complexe zaken beheert op meerdere servers.
Vanuit Kubernetes kunnen tal van Docker-pakketten worden geïmplementeerd en beheerd met behulp van functies zoals batchverwerking van patches en updates en probleemdetectie op schaal. En dat alles tijdens het afhandelen van on-demand aanvragen. Met Kubernetes kunnen IT-afdelingen het volgende doen:
Oracle Cloud Infrastructure biedt een aantal services voor het versnellen en bouwen van moderne cloudnative applicaties. Met name Container Engine for Kubernetes en Container Registry voor het beheren en analyseren van Docker-images, zijn robuuste en gratis tools waarmee het beheer kan worden gestroomlijnd en de prestaties kunnen worden verbeterd. Ontdek het zelf en probeer Oracle Cloud gratis uit voor toegang tot Kubernetes.
Na de sluiting van het Archeologisch Park van Pompeii in Italië in maart 2020 moest bij de plannen voor heropening rekening worden gehouden met social distancing. Toeristen moesten toegang krijgen tot de nieuwe MyPompeii-app die wordt ondersteund door een aantal Oracle-producten voor het versnellen van een cloudnative mobiele oplossing, zoals Oracle Container Engine for Kubernetes en Oracle Container Registry.
Het in Londen gevestigde bedrijf Snap Vision biedt visuele zoektechnologie op basis van kunstmatige intelligentie om klanten te helpen de perfecte kleding voor hen te vinden. Omdat winkels vanwege COVID-19 voor langere tijd moesten sluiten, konden retailers in Groot-Brittannië met behulp van de technologie van Snap Vision een digitale winkelervaring creëren voor hun klanten. Schalen was een enorme uitdaging. Snap Vision kon echter met behulp van Oracle Cloud Infrastructure en Kubernetes nieuwe winkelomgevingen hosten tegen lage kosten.