Close

Wat is docker? Een handleiding voor containerisatie


Docker is een open source-softwareplatform waarmee ontwikkelaars toepassingen in containers kunnen aanmaken, uitvoeren, implementeren, bijwerken en beheren. Met docker kunnen ontwikkelaars de toepassingslaag abstraheren door codes, afhankelijkheden en bibliotheken te verpakken in 'containers'. Een container is een gevirtualiseerde, op zichzelf staande installatie van een toepassing die alles bevat wat nodig is om onafhankelijk te kunnen werken. Docker heeft een revolutie teweeggebracht in de wereld van softwareontwikkeling door de containerisatie te vereenvoudigen.

Deze handleiding behandelt wat docker is, hoe het kan worden toegepast en wat de voordelen zijn van containerisatie. Ze geeft informatie over het gebruik van docker in verschillende softwareontwikkelingsscenario's, waaronder microservices, continue integratie en implementatie.

Compass-logo.

Compass gratis uitproberen

Verbeter je ontwikkelaarservaring, catalogiseer alle services en verbeter de gezondheid van je software.

Zo werkt Docker


Docker is opensourcetechnologie die kan worden uitgevoerd in Windows, Linux en macOS. Docker isoleert nieuw gemaakte software in zijn eigen omgeving. Deze omgeving begint met een dockerimage: een uitvoerbaar pakket dat bepaalt hoe een container wordt gemaakt, welke software deze gebruikt en hoe deze wordt uitgevoerd.

Nadat de image is uitgevoerd maakt docker een container die alles bevat wat nodig is om een applicatie uit te voeren. Dit omvat systeemtools, codebibliotheken, alle eventuele afhankelijkheden en runtime. Je kunt de dockerimage beschouwen als de broncode van de container en de dockercontainer als de installatie van de dockerimage.

Een belangrijk voordeel van containerisatie is de isolatie van afhankelijkheden. De container heeft alle noodzakelijke afhankelijkheden, terwijl de host waarop de container werkt dat niet heeft. Dit verbetert de beveiliging en voorkomt afhankelijkheidsconflicten.

Docker bevordert agile praktijken met snelle ontwikkelingscycli gericht op samenwerking, flexibiliteit en het continu verzenden van code die werkt. Docker stelt ontwikkelaars in staat om snel tests uit te voeren en te zorgen dat alles werkt voordat een applicatie wordt geïmplementeerd in de staging- en productieomgeving.

pictogram code-store
gerelateerd materiaal

Microservices vs. monolithische architectuur

Pictogram van drie ringen
Oplossing bekijken

Verbeter je DevEx met Compass

Waarvoor wordt docker gebruikt?


Docker maakt containers, geïsoleerde omgevingen waarin een toepassing met al zijn afhankelijkheden wordt gebundeld voor consistente prestaties in verschillende instellingen. Het begint met dockerimages, alleen-lezen sjablonen die bepalen wat er in de container zit en hoe de container werkt.

Ontwikkelaars gebruiken docker op verschillende manieren tijdens de ontwikkeling, tests en implementatie van software: van het onderverdelen van toepassingen in microservices en het vereenvoudigen van CI/CD-pipelines tot het vereenvoudigen van het testen van software en ervoor zorgen dat apps goed werken in verschillende omgevingen.

Microservices-architectuur

Eén manier om de vraag "Waarvoor wordt docker gebruikt?" te beantwoorden gaat over het gebruik ervan in microservices.

Docker is perfect voor de implementatie van een microservicearchitectuur, waarbij één applicatie wordt gemaakt door deze op te splitsen in een verzameling onafhankelijke, losjes gekoppelde services.

Door dockercontainers te gebruiken voor het maken van microservices kunnen DevOps-teams code testen zonder bang te hoeven zijn dat dit een negatieve invloed heeft op de rest van de applicatie door voor elke microservice geïsoleerde omgevingen te bieden. Elke container werkt onafhankelijk en heeft zijn eigen set van afhankelijkheden en resources, wat betekent dat veranderingen of problemen in de ene container geen invloed hebben op andere containers. Dit niveau van isolatie en controle is niet zo eenvoudig te bereiken met bare metal-servers, waarbij veranderingen in één service gemakkelijker gevolgen kunnen hebben voor het hele systeem. Op deze manier verbetert docker de snelheid en efficiëntie van de ontwikkeling en zorgt tegelijkertijd voor meer betrouwbaarheid, verbeterde schaalbaarheid, snellere implementatietijden en eenvoudigere acceptatie van de microservices-architectuur.

Hoewel microservices de complexiteit van afzonderlijke componenten verminderen door functionaliteit in te kapselen, is het lastig om mogelijk honderden van deze onafhankelijke services te organiseren. Hier kan docker je bij helpen. Tools zoals Compass en Kubermetes kunnen ook helpen om de verspreiding van microservices tegen te gaan. Compass, met zijn componentencatalogus, verzamelt alle softwarecomponenten van het bedrijf op één plek. Kubermetes biedt robuuste organisatiemogelijkheden, wat betekent dat het toepassingen in containers efficiënt kan beheren, implementeren en schalen binnen een cluster van machines.

Compass stelt beste praktijken vast en meet de staat van software met scorecards. Het biedt gegevens en inzichten in de hele DevOps-toolchain met behulp van extensies die zijn gemaakt op het Atlassian Forge-platform.

Continue integratie en implementatie

Ontwikkelaars kunnen pijplijnen voor continue integratie en continue levering (CI/CD) opzetten met behulp van docker in DevOps. Dit betekent dat codewijzigingen moeten worden samengevoegd met de hoofdbranch van het project (continue integratie) terwijl wordt gegarandeerd dat eindgebruikers beschikken over een werkende applicatie met actuele, betrouwbare software, waardoor continue implementatie mogelijk wordt.

Docker vereenvoudigt de CI/CD-cyclus, waardoor ontwikkelaars operationele teams een applicatie kunnen geven die is verpakt als een image en die op elke docker-host werkt.

Containers

Ontwikkelaars maken ook containers zonder docker te gebruiken. Docker heeft echter geavanceerde oplossingen en intelligente tools die het hele proces vereenvoudigen en automatiseren. Dockerimages zijn zelfstandige, lichte, uitvoerbare softwarepakketten die systeembibliotheken, instellingen, tools, runtime, code en alle afhankelijkheden bevatten die nodig zijn om de toepassing te laten werken.

Een dockerimage isoleert de software effectief van de omgeving, waardoor een uniforme bediening/uitvoering van meerdere containers wordt gegarandeerd, ongeacht de verschillen tussen ontwikkeling of implementatie. Dit is mogelijk omdat docker gebruikmaakt van resource-isolatie in de kernel van het besturingssysteem om meerdere containers binnen hetzelfde besturingssysteem uit te voeren.

Dockerimages specificeren een basislaag en bovenop deze basis zijn alle noodzakelijke afhankelijkheden geïnstalleerd. Als de image eenmaal is gemaakt, kan deze op elke docker-host worden uitgevoerd, ongeacht het besturingssysteem van de host, zolang de docker-daemon actief is. De actieve container interageert met het host-besturingssysteem via de docker-daemon, waardoor flexibiliteit mogelijk is bij het kiezen van het besturingssysteem van de host.

Docker maakt ook snellere migraties mogelijk, waardoor het makkelijker wordt om nieuwe installaties te creëren en de onderhoudsworkflows van containers in meerdere docker-omgevingen te vereenvoudigen.

Software testen

Docker biedt aanzienlijke flexibiliteit en verschillende voordelen voor het testen van software, waaronder:

  • Consistente testomgevingen: docker verpakt alles wat de applicatie nodig heeft om op elke docker-host te kunnen functioneren, niet alleen op die van de ontwikkelaar.
  • Testautomatisering: de integratie van docker in bestaande automatisering vereenvoudigt repetitieve taken.
  • Kostenbesparing: met docker kunnen testomgevingen worden ingesteld op afzonderlijke, minder krachtige servers, waardoor er geen speciale hardware of VM's nodig zijn. De hosts van de productie worden niet beïnvloed door testruns, waardoor de prestaties en stabiliteit behouden blijven.
  • Betere samenwerking: docker maakt het eenvoudig om testomgevingen te delen door simpelweg containerimages te delen met teamleden.

Voordelen van docker


De voordelen van het gebruik van docker voor softwareontwikkeling en -implementatie zijn onder meer schaalbaarheid, consistentie, draagbaarheid, isolatie en efficiënt gebruik van resources. Dankzij de mogelijkheid van docker om afhankelijkheden te isoleren, kan elke container betrouwbaar werken, ongeacht de omgeving. Deze voordelen hebben een positieve invloed op teams in het hele bedrijf, waaronder ontwikkelaars, operationele afdelingen en kwaliteitsborging.

Schaalbaarheid

Dockercontainers starten snel, waardoor een naadloze implementatie van applicaties op aanvraag mogelijk is. Dankzij dit reactievermogen kunnen toepassingen worden op- of afgeschaald op basis van fluctuerend verkeer of verhoogde werkdruk.

Online shoppers kunnen bijvoorbeeld een e-commercewinkel-app overspoelen tijdens een Black Friday-uitverkoop. Om deze pieken op te vangen, kunnen dockercontainers waarop de microservices van de website werken, automatisch worden geschaald. Een orkestratieetool zoals Kubermetes beheert dit, aangezien het geconfigureerd moet worden om het aantal actieve containers aan te passen op basis van de vraag.

Een tool voor het organiseren van containers biedt een kader voor het automatisch beheren van de levenscyclus van containers en de architectuur voor microservices op grote schaal. De tool automatiseert de operationele inspanningen die nodig zijn om werklasten en services in containers uit te voeren/beheren door onder andere registratie, implementatie, netwerken, schaalvergroting en taakverdeling af te handelen.

Naarmate het aantal shoppers en transacties toeneemt, bouwt de orkestratietool nieuwe containers om de werklast te verdelen. Dit zorgt ervoor dat de website soepel kan functioneren, ondanks pieken in het verkeer.

Consistentie

Docker zorgt voor consistentie in ontwikkeling en implementatie. Het stelt ontwikkelaars in staat om pakketten aan te maken en te klonen die in elke omgeving werken. Gebruikers kunnen de exacte versie van de benodigde bibliotheken en pakketten in een container verifiëren, waardoor het risico op bugs als gevolg van enigszins verschillende afhankelijkheidsrevisies tot een minimum wordt beperkt.

Zonder deze consistentie zou het verwijderen van bugs en het testen van codes vervelend en tijdrovend zijn. Door het aantal inconsistenties zou de levering van software onbetrouwbaar worden.

Draagbaarheid

Docker is een lichte, draagbare softwaretool die alles bevat wat de applicatie nodig heeft om consistent in verschillende omgevingen te kunnen werken.

Doordat alles op zichzelf staat, zijn de containers niet afhankelijk van vooraf geïnstalleerde software of configuraties op de hostcomputer. Dit maakt het eenvoudig om waar nodig containers te configureren en te implementeren.

Isolatie

Een dockercontainer isoleert code in een op zichzelf staande omgeving, onafhankelijk van andere containers of het besturingssysteem van de hostcomputer. Deze isolatie maakt het veiliger om te testen zonder risico dat de hele applicatie ontspoort. Een dockercontainer elimineert ook compatibiliteitsproblemen en afhankelijkheidsconflicten die kunnen optreden wanneer toepassingen rechtstreeks in verschillende omgevingen of systemen worden uitgevoerd, aangezien docker een uniek, consistent platform biedt om toepassingen uit te voeren.

Efficiënt gebruik van hulpbronnen

Vergeleken met traditionele virtualisatie optimaliseert Docker het gebruik van hulpbronnen op verschillende belangrijke gebieden:

  • Dockercontainers nemen doorgaans minder geheugen en schijfruimte in beslag dan VM's.
  • Dockercontainers delen de kernel van de hostcomputer, waardoor de overhead voor het gebruik van meerdere VM's wordt geëlimineerd.
  • Gebruikers kunnen CPU-capaciteit, geheugen en schijfruimte specifiek toewijzen aan elke dockercontainer.
  • Gebruikers kunnen dockerorkestratietools instellen om automatisch de levenscyclus van containers te beheren en het gebruik van resources op een cluster van machines te optimaliseren.

Gebruik Compass voor containerorkestratie met docker


Containerisatie met docker introduceert het probleem van het beheren en begrijpen van een systeem met veel containers dat op veel docker-hosts draait. Het is cruciaal om de complexiteit van gedistribueerde architectuur te beheren wanneer deze wordt op- of afgeschaald, om betrouwbare prestaties van applicaties te garanderen. Docker zorgt voor de containerisatie, maar tools zoals Compass bieden waardevolle inzichten in je ontwikkelingsomgeving.

Compass is een uitbreidbaar ontwikkelaarsplatform dat verspreide informatie over de prestaties, status van services en teamsamenwerking samenbrengt op één centrale, doorzoekbare locatie.

Door Compass te gebruiken, kun je efficiëntieverbeteringen bereiken waardoor je ontwikkelingsteam:

  • de wildgroei van software beheerst en de productiviteit verhoogt met een componentencatalogus waarmee ontwikkelaars snel kunnen vinden wat ze nodig hebben.
  • De status van je service bewaken met activiteitsupdates van je componenten en hun afhankelijkheden in real time.

Compass is geen tool voor het organiseren van containers, maar vormt een aanvulling op je dockerconfiguratie door een gecentraliseerd overzicht te geven van je ontwikkelingsinspanningen en door te helpen bij het identificeren van verbeterpunten.

Het ultieme antwoord op de vraag wat docker is, ligt in zijn vermogen om processen te stroomlijnen, de efficiëntie te verbeteren, consistentie te garanderen en de draagbaarheid te behouden, waardoor docker onmisbaar is bij moderne DevOps-praktijken.

De toegevoegde ondersteuning van tools zoals Compass optimaliseert het potentieel van docker bij het beheer van complexe gedistribueerde architecturen. Door gebruik te maken van de containerisatiemogelijkheden van docker kunnen ontwikkelaars applicaties efficiënter maken, testen en implementeren.

Meer informatie over Compass

Wat is Docker? Veelgestelde vragen


Wat is het verschil tussen Kubermetes en docker?

Kubermetes en docker worden vaak naast elkaar gebruikt. Docker biedt een omgeving voor het uitvoeren van containers, terwijl Kubernetes clusters van dockercontainers orkestreert en beheert, waardoor deze optimaal werken. Docker is kort gezegd een containertechnologie, terwijl Kubermetes een tool is voor het orkestreren van containers. Als een toepassing zo ingewikkeld wordt dat het handmatig beheren van de containers te moeilijk wordt, investeer je in Kubermetes.

Wat is het verschil tussen docker en een virtuele machine?

In tegenstelling tot VM's virtualiseren dockercontainers geen hardware en hebben ze geen volledig gastbesturingssysteem nodig. In plaats daarvan virtualiseren dockercontainers het besturingssysteem en voeren ze dit uit als een geïsoleerd proces op het hostsysteem. Dit maakt dockercontainers sneller en lichter dan traditionele VM's.

Bovendien delen dockercontainers hulpbronnen van de hostcomputer, zodat geen hulpbronnen hoeven te worden toegewezen aan elke virtuele machine. Hierdoor kunnen ze efficiënter worden gebruikt. Gebruik docker als je draagbare, lichte omgevingen nodig hebt voor het uitvoeren van applicaties. VM's zijn beter geschikt voor het uitvoeren van taken waarvoor een volledig gastbesturingssysteem of een gesimuleerde hardwareomgeving is vereist.

Wat zijn enkele veelvoorkomende problemen bij Docker?

Veelvoorkomende uitdagingen bij Docker zijn onder meer beperkte resources, moeilijkheden bij het netwerken en problemen met Docker-afbeeldingen. De juiste toewijzing en controle van resources zijn essentieel om ervoor te zorgen dat containers over voldoende resources beschikken om efficiënt te kunnen werken.


Deel dit artikel
Volgend onderwerp

Aanbevolen artikelen

Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.

Toelichting DevOps

Compass-community

illustratie obstakels overwinnen

Tutorial: Een component aanmaken

Afbeelding van kaart

Ga gratis aan de slag met Compass

Meld je aan voor onze DevOps-nieuwsbrief

Thank you for signing up