Wat is Docker alles wat je moet weten
Madelief
Docker is door de jaren heen uitgegroeid tot de belangrijkste standaard in containertechnologie. Een nieuwe manier om software, vaak zelf geschreven, in te pakken en uit te rollen. Zo hoef je niet langer rekening te houden met hardware en specifieke configuratieparameters. Maar het vraagt wel een heel andere manier van werken. Wat is Docker in het kort en hoe werkt het? Wij zetten in deze blog alles voor jou op een rijtje, dus lees snel verder!
Wat is Docker?
We kunnen het het beste omschrijven als een open-source platform waarmee je applicaties kunt ontwikkelen, verzenden en uitvoeren in geïsoleerde omgevingen. Deze omgevingen worden containers genoemd. Containers zijn lichte en draagbare eenheden die alles bevatten wat een applicatie nodig heeft om te draaien. Denk hierbij aan code, runtime, systeemtools, bibliotheken en instellingen. Hierdoor kun je een applicatie uitvoeren op elke machine, ongeacht de onderliggende infrastructuur, zonder dat je je zorgen hoeft te maken over compatibiliteitsproblemen.
Hoe werkt Docker?
‘Build, Ship and Run Any App, Anywhere’, is de slogan van Docker. Docker heeft een indrukwekkende reis afgelegd. Sinds het ontstaan in 2013 is het een vrij onbekende en behoorlijk technische open-source technologie. Tegenwoordig is Docker uitgegroeid tot een gestandaardiseerde runtime omgeving. Het is ontworpen met systeembeheerders en ontwikkelaars in gedachten en biedt een scala aan toepassingsmogelijkheden; van serverdiensten tot het beheer van command-line-tools. Kortom, het is een must-have tool voor iedereen die serieus is over het opschalen van hun tech-game.
In eerste instantie was Docker bedoeld om snel en makkelijk een ontwikkelomgeving op een reproduceerbare manier in de lucht te brengen. Vooral ontwikkelaars en testers werden hier gelukkig van. Sinds de afgelopen jaren zijn er steeds meer producten, projecten en tools beschikbaar om dit proces te verbeteren.
Docker Container
Veel mensen associëren de term Docker met containers, dit is omdat deze techniek het meest succesvol is in het maken van containers. Toch zijn containers niet nieuw. Container technologie bestaat al meer dan 10 jaar in de vorm van LXC op Linux. Een container is een standaard software-eenheid waarin code en alle bijhorende afhankelijkheden zijn verpakt. Hierdoor kunnen applicaties snel en betrouwbaar in verschillende omgevingen worden uitgevoerd. Containers zijn niet-persistent en worden opgebouwd uit images.
In tegenstelling tot een virtuele machine die hardware virtualisatie biedt, biedt een container lichtgewicht virtualisatie op het niveau van besturingssysteem door de ‘gebruikersruimte’ vast te leggen. Containers delen de kernel van het hostsysteem met andere containers.
Helaas brengen containers ook beveiligingsrisico’s met zich mee. Als een gebruiker binnen een container superuser rechten heeft, kan hij deze van het host OS benaderen en aanvallen. Natuurlijk zijn containers wel te beveiligen maar hier moet wel veel moeite voor worden gedaan.
Docker Image
Een “Docker Image” gebruik je om snel een container te maken. Het is een blauwdruk van een kant-en-klare container, die je kunt gebruiken om een nieuwe container te maken. Een goed voorbeeld hiervan is WordPress. Op de container image van WordPress staat al een WordPress installatie, die geactiveerd wordt nadat je een container hebt besteld. In de basis zijn containers volledige runtime omgevingen voor een dedicated doel. Met andere woorden, een container bevat een applicatie inclusief de benodigdheden om te kunnen draaien. Deze is volledig onafhankelijk van onderliggend OS of gebruikte architectuur.
Softwareverzamelingen dienen uitgevoerd te worden als een container, waarbij een set instructies aanwezig zijn voor het creëren van een container die op het platform kan worden gedraaid. Ontwikkelaars leveren in samenwerking met testers kant-en-klare werkende images op die een stuk minder verrassingen bevatten doordat deze zijn getest. Images kunnen niet worden gewijzigd en voor verwijzingen in een image moet een nieuwe image worden gemaakt. De server zorgt ervoor dat de software overal hetzelfde draait.
Docker-Engine
Het belangrijkste onderdeel vis de Docker Engine. Dit is de open-source host software die de containers bouwt en uitvoert. engines fungeren als de client-server applicaties die containers ondersteunt op verschillende Windows-servers en Linux-besturingssystemen, waaronder Oracle Linux, CentOS, Debian, Fedora, RHEL, SUSE en Ubuntu.
De belangrijkste componenten binnen Docker Engine:
- Docker Daemon: Dit beheert images, containers, netwerken en volumes. Het luistert ook naar Docker API verzoeken en verwerkt ze.
- Docker Engine REST API: Dit is een door Docker ontwikkelde API die communiceert met de daemon.
- Docker cli: Dit is de commandoregel interface waarmee je kunt communiceren met de Docker daemon.
Waarvoor kun je het gebruiken?
Docker maakt het mogelijk om applicaties te isoleren in containers, waardoor ze onafhankelijk van elkaar kunnen draaien op dezelfde machine. Dit biedt de mogelijkheid om meerdere applicaties op één machine te draaien zonder dat ze elkaar beïnvloeden. Bovendien maakt deze techniek het ook gemakkelijker om applicaties te verplaatsen tussen verschillende omgevingen (zoals van een ontwikkelingsomgeving naar een productieomgeving), doordat alle vereiste componenten zijn ingekapseld in de container.
De voordelen
De techniek doet zijn slogan: ‘Build, Ship, Run’, niet tekort aangezien het op elke gewenste cloud draait in combinatie met elke gewenste public cloud provider. Hieronder staan een aantal voordelen :
- Als ontwikkelaar kan een deel van je werk vervelend en repetitief worden als het handmatig wordt uitgevoerd. Met containers kun je de automatisering van deze taken inplannen.
- Docker opruimen is makkelijk en draagbaar: Docker stelt elk lid van je ontwikkelteam in staat om aan applicaties te werken, zelfs met verschillende servers, machines of besturingssystemen. Deze opzet kan veel van de problemen elimineren die ontstaan door platform incompatibiliteiten. In vergelijking met VM’s kunnen containers meer ruimte besparen. Als je een container stopt en verwijdert, blijft er niets achter op de Docker-host omdat Docker het bestandssysteem dat voor de container werd aangemaakt volledig verwijdert.
- Er bestaat een grote community en door deel te nemen aan deze community evenementen kun je andere gebruikers ontmoeten en met hen in contact komen.
Benieuwd naar meer? Check dan ons vacature aanbod via onderstaande button of neem direct contact op met een van onze Consultants. Oriënteer, kies en solliciteer!