Wat is Docker?
Als je regelmatig werkt met programmeren, webdevelopment of servers, heb je waarschijnlijk de term Docker al eens gehoord.
Docker is een platform waarmee we applicaties kunnen draaien in een omgeving die een container wordt genoemd.
Simpel gezegd helpt Docker ons om een applicatie te verpakken samen met alles wat ervoor nodig is, zoals bibliotheken, dependencies, configuraties en specifieke runtime-versies.
Wanneer die applicatie dus wordt verplaatst van de laptop van een developer naar een server, wordt de kans op problemen zoals:
"Op mijn laptop werkt het, waarom geeft de server een error?"
aanzienlijk kleiner.
Docker zorgt ervoor dat de applicatieomgeving consistenter is.
Wat is een Container?
Je kunt een container zien als een speciale doos voor een applicatie.
In die doos bevinden zich de applicatie en alle benodigdheden om de applicatie te laten draaien.
Stel we hebben bijvoorbeeld een Laravel-applicatie die het volgende vereist:
- PHP 8.3
- MySQL
- Redis
- Nginx
- Composer
In plaats van alles stuk voor stuk op de computer te installeren, kunnen we Docker gebruiken om al deze benodigdheden in hun eigen containers te laten draaien.
De structuur ziet er ongeveer zo uit:
Laravel Application
│
├── PHP Container
├── Nginx Container
├── MySQL Container
└── Redis Container
Al deze containers kunnen met elkaar verbonden worden en samenwerken als één systeem.
Docker is geen Virtuele Machine
Docker wordt vaak verward met een Virtuele Machine (VM).
Toch zijn ze verschillend.
Een Virtuele Machine draait doorgaans een compleet besturingssysteem binnen een computer.
Stel we gebruiken Windows en draaien vervolgens Ubuntu via VirtualBox.
Een VM vereist vrij veel resources omdat het een compleet besturingssysteem moet draaien.
Docker is lichter omdat containers gebruikmaken van de kernel van het host-besturingssysteem.
Een eenvoudig overzicht hiervan:
Virtuele Machine
Hardware
↓
Operating System
↓
Virtual Machine
↓
Guest Operating System
↓
Application
Docker
Hardware
↓
Operating System
↓
Docker
↓
Container
↓
Application
Daarom is Docker meestal sneller te maken, te starten, te stoppen en te verwijderen in vergelijking met een Virtuele Machine.
Waarom wordt Docker zoveel gebruikt?
Er zijn verschillende redenen waarom Docker momenteel erg populair is onder developers.
1. Consistentere omgeving
Een van de klassieke problemen bij development is het verschil in omgevingen.
De eerste developer gebruikt bijvoorbeeld:
PHP 8.2
De tweede developer gebruikt:
PHP 8.3
Terwijl de productieserver het volgende gebruikt:
PHP 8.1
Dit soort kleine verschillen kunnen soms errors in de applicatie veroorzaken.
Met Docker kan de omgevingsversie vanaf het begin worden vastgelegd.
Bijvoorbeeld:
FROM php:8.3-fpm
Op deze manier kunnen alle developers de applicatie draaien met dezelfde PHP-versie.
2. Projectsetup wordt een stuk eenvoudiger
Stel je voor dat je net bij een project komt kijken.
Normaal gesproken moet je mogelijk het volgende installeren:
PHP
Composer
MySQL
Node.js
Redis
Nginx
Om nog maar te zwijgen over het zorgen dat de versies overeenkomen.
Met Docker hoef je doorgaans alleen een commando uit te voeren zoals:
docker compose up -d
Docker start vervolgens de services die door het project zijn gedefinieerd.
De development setup wordt zo een stuk praktischer.
3. Minder "Werkt op mijn machine"-problemen
Developers hebben vast wel eens in zo'n situatie gezeten:
Developer A:
"De applicatie werkt op mijn laptop."
Developer B:
"Op mijn laptop geeft het een error."
Server:
"Hier werkt het helemaal niet."
Dergelijke problemen ontstaan meestal door verschillen in de omgeving.
Docker helpt ervoor te zorgen dat de applicatie in nagenoeg dezelfde omgeving draait, of het nu gaat om:
- de laptop van de developer,
- de computer van een andere developer,
- de staging-server,
- de productieserver.
4. Eenvoudig meerdere services draaien
Moderne applicaties vereisen meestal meer dan één service.
Een applicatie vereist bijvoorbeeld:
Backend → Laravel
Database → MySQL
Cache → Redis
Web Server → Nginx
Queue → Laravel Queue Worker
Met Docker Compose kunnen al deze services in één bestand worden geconfigureerd.
Bijvoorbeeld:
services:
app:
build: .
mysql:
image: mysql:8
redis:
image: redis:latest
nginx:
image: nginx:latest
Daarna hoef je alleen dit uit te voeren:
docker compose up -d
Docker zal al deze services starten. Voor een lijst met andere handige commando's kun je de handleiding [bekijken van docker container logs]() die we hebben samengevat.
Conclusie
Docker is een platform waarmee we applicaties kunnen draaien binnen containers met een consistentere omgeving.
In plaats van handmatig PHP, MySQL, Redis, Nginx en verschillende dependencies te installeren, kunnen we dit allemaal definiëren met behulp van Docker.
Het grootste voordeel is dat de development-omgeving makkelijker te verplaatsen, te delen en uit te voeren is op andere apparaten.
De belangrijkste concepten om te begrijpen wanneer je begint met het leren van Docker zijn:
- Docker Image als sjabloon.
- Container als de draaiende applicatie.
- Dockerfile als instructie voor het maken van een image.
- Docker Compose om meerdere containers te beheren.
- Volume om data op te slaan.
- Netwerk voor communicatie tussen containers.
Als je vaak applicaties ontwikkelt die meerdere services vereisen of als je in een team van developers werkt, is Docker zeker een tool die het waard is om te leren.
Gerelateerde Artikelen
DeepSeek-V4-Pro officieel gelanceerd: inzicht in het nieuwe piek- en dalurentariefschema
Kennismaken met FFmpeg: Het Magische Hulpmiddel voor Video- en Audiobewerking
Geschreven door
Wilan
Vaste bijdrager van Bali Island Tekno die actief kennis deelt over technologie, programmeren en de wereld van software-engineering.