Wat is Docker?


Met Docker kunt u virtuele applicatiecontainers creëren, implementeren en beheren. Deze technologie, die in 2013 werd geïntroduceerd, is snel ingeburgerd geraakt bij het ontwikkelen van applicaties. Ontwikkelaars kunnen hiermee met ongeëvenaarde flexibiliteit en overdraagbaarheid werken. Lees meer over Docker in dit artikel.

Serveur advance

Wat is een container?

Docker is tegenwoordig zo populair dat de termen "Docker" en "containers" vaak door elkaar gebruikt worden. Containertechnologie was echter al jaren of zelfs al decennia beschikbaar, voordat Docker in 2013 publiek beschikbaar werd.

Maar laten we meteen ter zake komen: wat is Docker? Docker is een opensource softwareplatform dat gebruikt wordt om virtuele containers voor applicaties te maken, te implementeren en te beheren op een gemeenschappelijk OS (Operating System). Er hoort ook een ecosysteem van aanverwante tools bij.

De Docker containertechnologie werd geïntroduceerd in 2013. Docker Inc. werd destijds opgericht om een commerciële editie van de containermanagementsoftware te ondersteunen en is de hoofdsponsor van een opensourceversie.

Docker biedt softwareontwikkelaars een snellere en efficiëntere manier om gecontaineriseerde onderdelen van een softwareapplicatie te ontwikkelen en te testen. Zo kunnen ze meerdere programma's tegelijk ontwikkelen.

Elke container bevat alle elementen die nodig zijn om een softwarecomponent te ontwikkelen en garandeert dat deze eenvoudig kan worden ontwikkeld, getest en geïmplementeerd. Docker maakt portabiliteit mogelijk wanneer deze ingepakte containers naar andere servers of omgevingen worden overgedragen.

  • Een centraal element van Docker is het gebruik van Docker-images: onveranderbare bestanden die alle elementen bevatten die nodig zijn om een applicatie uit te voeren, waardoor het eenvoudiger wordt om applicaties in verschillende IT-omgevingen te implementeren en te distribueren.

Hoe werkt Docker?

Docker stelt containers in, levert ze en voert ze uit. Deze technologie is beschikbaar via het OS: een container “verpakt” de dienst of functie van de applicatie samen met alle library’s, configuratiebestanden, dependency’s en andere onderdelen en parameters die nodig zijn voor een goede werking.

Alle containers delen samen de diensten van één onderliggend OS. Docker-images bevatten alle afhankelijkheden die nodig zijn om de code binnen een container uit te voeren, zodat de container van de ene Docker-omgeving naar de andere (met hetzelfde OS) kan overschakelen en ongewijzigd kan worden uitgevoerd.

Docker gebruikt de afscherming van resources in de OS-kernel om meerdere containers op hetzelfde systeem uit te voeren. Dit verschilt van een virtuele machine (VM), die een volledig besturingssysteem met uitvoerbare code bovenop een abstracte laag van fysieke hardwareresources verpakt.

Docker was oorspronkelijk gemaakt voor gebruik op het Linux-platform, maar het toepassingsgebied is uitgebreid om niet-Linux-besturingssystemen beter te ondersteunen. Voorbeelden hiervan zijn Microsoft Windows en Apple OS X. Er bestaan versies van Docker voor Amazon Web Services (AWS) en Microsoft Azure.

De voordelen van Docker

Dit zijn de belangrijkste voordelen van Docker:

Afscherming van lichte applicaties:

Docker gebruikt lichtgewicht containers om applicaties en hun afhankelijkheden effectief af te schermen. Elk programma wordt zo zelfstandig en consistent uitgevoerd, zonder andere programma's te hinderen.

Icons/concept/Cloud/Cloud Hand Created with Sketch.

Applicatieportabiliteit tussen verschillende omgevingen:

Containerinstances pakken de applicatie en haar dependency’s in, waardoor deze gemakkelijk op verschillende machines kunnen worden geïmplementeerd, of het nu gaat om lokale servers, VM's of cloudcontainers. Hierdoor hoeft men zich geen zorgen te maken over omgevingsverschillen.

Eenvoudiger maken, distribueren en implementeren:

Met Docker kunt u containerimages van uw applicaties maken en deze via Docker-registers distribueren.

Icons/concept/Cloud/Cloud Infinity Created with Sketch.

Verhoog de productiviteit van ontwikkelaars door ontwikkelomgevingen te standaardiseren:

Met Docker kunnen ontwikkelaars in consistente omgevingen werken. Elk teamlid heeft hiermee dezelfde afhankelijkheden en softwareconfiguraties, waardoor er minder compatibiliteitsproblemen tussen verschillende versies zijn.

Snellere ontwikkelcycli:

Dankzij de portabiliteit van Docker-containers en het gemak waarmee ze kunnen worden geïmplementeerd. Hierdoor kunt u programma's sneller ontwikkelen, testen en implementeren.

Icons/concept/Graph Created with Sketch.

Gemakkelijker opschalen van uw applicaties:

Docker vereenvoudigt het opschalen van applicaties, omdat nieuwe containers direct kunnen worden geïmplementeerd om aan de groeiende vraag te voldoen. Zo beschikt u over een flexibele en effectieve oplossing om met variabele workloads om te gaan.

Optimaal gebruik van uw resources en lagere infrastructuurkosten:

Hardware kan efficiënter worden gedeeld, wat de infrastructuurkosten verlaagt.

Stimuleert samenwerking:

Docker-containers garanderen een volledige reproduceerbaarheid van de ontwikkelomgeving. Dit vergemakkelijkt de samenwerking tussen uw ontwikkelaars en tegelijkertijd garandeert dit dat allen in een coherente en afgeschermde omgeving kunnen werken.

Docker versus virtual machines

Een virtuele machine (VM) is een software-emulatie van een fysiek computersysteem dat wordt uitgevoerd op een hostcomputer. Het is afgeschermd van dit systeem. Dit garandeert dat de software van de VM het primaire systeem niet kan beïnvloeden.

VM's worden vaak gebruikt voor taken als het gebruiken van door virussen geïnfecteerde gegevens, het testen van besturingssystemen en het maken van back-ups. Ze bestaan uit diverse bestanden, waaronder logbestanden, NVRAM-instellingen, bestanden op virtuele schijven en configuratiebestanden.

VM's worden ook gebruikt in servervirtualisatie, waarbij een fysieke server wordt onderverdeeld in meerdere afgeschermde servers, die elk hun eigen OS onafhankelijk uitvoeren.

Er zijn twee soorten VM's: systeem-VM's, waarbij meerdere VM's fysieke resources kunnen delen door middel van een hypervisor, en proces-VM's. Samen bieden ze een programmeeromgeving die platformonafhankelijk is.

Docker versus virtuele machine: belangrijkste verschillen

Dit zijn de significante verschillen tussen Docker en VM's.

Ondersteuning van besturingssysteem en de architectuur ervan

Het belangrijkste verschil tussen Docker en VM's is hun architectuur. VM's hebben een hostbesturingssysteem en een gastbesturingssysteem in elke VM. Een gastbesturingssysteem kan elk OS zijn, zoals Linux of Windows, onafhankelijk van het primaire OS.


Containerinstances worden op één enkele fysieke server gehost met een besturingssysteem dat ze onderling delen. Het delen van het host-OS tussen containers maakt ze lichter en verbetert de opstarttijd.


Docker-containers zijn het geschiktst om meerdere programma's op één kernel van een besturingssysteem uit te voeren, terwijl VM's nodig zijn als de services op verschillende OS'en moeten draaien.

Het geleverde beveiligingsniveau

Het tweede verschil tussen VM's en Docker is dat VM's autonoom zijn met hun eigen kernel en beveiligingsfuncties. Toepassingen waarvoor meer rechten en meer beveiliging nodig zijn, kunnen op virtuele machines worden uitgevoerd.


Omgekeerd is het bij containerinstances af te raden om de applicaties root-toegang te bieden en deze uit te voeren met lokale administratorrechten, omdat ze de kernel van de host delen. De Docker-technologie heeft toegang tot de subsystemen van de kernel. Eén geïnfecteerde applicatie kan dus het volledige hostsysteem hacken.

De mate van overdraagbaarheid

Een ander groot verschil tussen Docker en virtual machines is de portabiliteit: virtual machines zijn afgeschermd van hun besturingssysteem en kunnen dus niet op meerdere platforms worden uitgevoerd zonder tot compatibiliteitsproblemen te leiden.


Als u tijdens het ontwikkelen een applicatie op verschillende platforms wilt testen, moet u eerder Docker-containers overwegen. Deze zijn autonoom en kunnen applicaties in elke omgeving uitvoeren.


Omdat ze geen gastbesturingssysteem nodig hebben, kunnen ze gemakkelijk op verschillende platforms worden gebruikt. Docker-containers kunnen op servers worden geïmplementeerd, omdat de containers licht zijn. Dit betekent dat ze sneller kunnen worden opgestart en gestopt dan virtual machines.

Het prestatieniveau

Het laatste verschil tussen Docker en VM's zijn de prestaties: Docker-containers hebben minder resources nodig, omdat virtuele machines het volledige besturingssysteem moeten laden om op te starten.


In het geval van een virtuele machine kunnen resources zoals de CPU, het geheugen en de I/O niet permanent aan de containers worden toegewezen, in tegenstelling tot een Docker-container. De resources worden dan gebruikt op basis van het dataverkeer.


Het schalen en dupliceren van een Docker-container is simpel en gemakkelijk in vergelijking met een virtuele machine, omdat u geen besturingssysteem hoeft te installeren.

Waarvoor Docker gebruikt wordt

Hoewel het technisch mogelijk is om Docker te gebruiken voor het ontwikkelen en distribueren van elk type softwareapplicatie, is het vooral nuttig voor het uitvoeren van de volgende taken:

Ontwikkelen van applicaties

Door Docker te combineren met DevOps best practices kunnen containerapplicaties binnen enkele seconden worden geïmplementeerd, in tegenstelling tot grote traditionele monolithische applicaties waarvoor veel meer tijd nodig is.

Updates of wijzigingen in de code van een applicatie worden snel geïmplementeerd en uitgerold als men containers gebruikt als onderdeel van een grotere pijplijn voor continue integratie.

Applicatiebeheer met gestandaardiseerde images

De aanpak van Docker met een gestandaardiseerd, overdraagbaar image vereenvoudigt het beheer van toepassingen door alle vereiste afhankelijkheden en configuraties in één image samen te brengen. Dit garandeert consistentie en herhaalbaarheid in verschillende IT-omgevingen.

Zo kunt u applicaties op een transparante manier ontwikkelen, verpakken en distribueren naar elk Docker-compatibel platform.

Ontwikkelen van een architectuur op basis van microservices

Docker is ideaal voor het maken van een architectuur op basis van microservices. Dit biedt veel voordelen ten opzichte van een traditioneel programma. U kunt meerdere microservices aanmaken en implementeren, elk in zijn eigen container. Vervolgens kunt u ze integreren en een compleet programma samenstellen met behulp van een orkestratietool voor containers.

  • Microservices zijn een architecturale en organisatorische benadering van softwareontwikkeling waarbij de software is samengesteld uit kleine, onafhankelijke services die via goed gedefinieerde API's communiceren. Deze services zijn van kleine, zelfstandige teams.

Migratie van bestaande programma's naar een containerinfrastructuur

Een ontwikkelteam dat een bestaand programma wil moderniseren, kan Docker gebruiken om de toepassing naar een containerinfrastructuur te migreren.

Implementatie van hybride en multi-cloud cloudoplossingen

Docker-containers werken allemaal op dezelfde manier, ongeacht of ze lokaal worden geïmplementeerd of dat ze cloudcomputing gebruiken. Met Docker kunnen applicaties dus gemakkelijk worden verplaatst naar productie- en testomgevingen van verschillende cloudcomputingproviders.

Een Docker-programma dat meerdere cloudoplossingen gebruikt, kan als een hybride cloud of multi-cloud worden beschouwd. Bedrijven kunnen ook profiteren van cloudcontainerservices, zoals Kubernetes, die management- en orkestratieplatforms leveren voor containers in cloudomgevingen.

  • Kubernetes as a Service (KaaS) biedt een eenvoudige aanpak voor het implementeren en beheren van Kubernetes-clusters zonder de onderliggende infrastructuur te hoeven beheren. Ontwikkelteams kunnen zich dus richten op het maken en onderhouden van applicaties in plaats van op het beheren van de infrastructuur.

Containerisatie met Docker vereenvoudigt het maken, distribueren en implementeren van applicaties door deze applicaties en hun afhankelijkheden in lichtgewicht containers te verpakken. Docker-images dienen als sjablonen voor het maken van Docker-containers, die een efficiënte en reproduceerbare manier bieden om applicaties en hun uitvoeringsomgevingen te beheren.

OVHcloud en Docker

Gratis Managed Kubernetes® Service om uw containers te orkestreren

Kubernetes® is in deze sector de bekendste container-orkestrator. Het wordt gebruikt in bedrijven van elke grootte. Het maakt implementatie, resilience en groei van uw applicaties gemakkelijker, zelfs in hybride of multi-cloudinfrastructuren.

De Managed Kubernetes® Service is gebaseerd op Public Cloud-instances van OVHcloud. Met load balancers van OVHcloud en de extra inbegrepen disks kunt u elk soort workload met behoud van volledige reversibiliteit hosten.

Orchestration

FAQ

Wat is het nut van Docker?

Docker is een lichtgewicht virtualisatietool waarmee u containers kunt maken, beheren en uitvoeren. Met deze efficiënte oplossing kunt u applicaties maken en implementeren in verschillende IT-omgevingen. Het is vooral geschikt om een consistente, afgeschermde omgeving voor applicaties te creëren en het ontwerp, de distributie en de uitvoering ervan te vergemakkelijken.

Wat is een Docker-container?

Een Docker-container is een lichte, zelfstandige uitvoeringseenheid die een programma en de bijbehorende afhankelijkheden bijeenbrengt, waardoor het op consistente wijze in verschillende IT-omgevingen kan worden geïmplementeerd en uitgevoerd. Docker-containers gebruiken de virtualisatiefuncties van het host-OS om toepassingen van elkaar te scheiden en tegelijkertijd de systeemresources efficiënt te delen.

Waarom Docker installeren?

Door Docker te installeren, kunt u profiteren van de voordelen van lichte virtualisatie en containermanagement. Hiermee kunt u software maken, testen en implementeren in verschillende IT-omgevingen en tegelijk consistentie en portabiliteit van applicaties garanderen.

Wat zijn de voor- en nadelen van het gebruik van Docker?

De voordelen van het gebruik van Docker zijn onder andere het afschermen van applicaties, een betere overdraagbaarheid, het vereenvoudigen van het maken en implementeren van software, het verbeteren van de productiviteit van ontwikkelaars, het vereenvoudigen van samenwerking en het optimaliseren van het systeem. Mogelijke nadelen hebben te maken met de complexiteit van de configuratie, het beheer van images en containers en de mogelijkheid van beveiligingsproblemen bij het gebruik van gedeelde containers.