Docker Container
TL;DR
Een Docker-container is een eenvoudige manier om een app te verpakken met alles wat het nodig heeft, zodat het overal hetzelfde werkt.
Wat is een Docker-container?
Een Docker-container is een klein, lichtgewicht pakket dat bevat:
- de app-code
- de benodigde tools
- bibliotheken
- instellingen
Omdat alles samen verpakt is, werkt de app op dezelfde manier op elke computer.
Containers verschillen van virtuele machines omdat ze geen eigen besturingssysteem hebben. Ze gebruiken het hoofd-OS van de server maar blijven gescheiden van andere apps.
Hier is een eenvoudige manier om het voor te stellen:
- Virtuele Machine: Een volledig huis met eigen elektriciteit en sanitair.
- Docker-container: Het is als een appartement in een gebouw, je eigen ruimte, maar je deelt dingen zoals water en elektriciteit.
Waarom Docker-containers nuttig zijn
Veel bugs ontstaan wanneer apps in verschillende omgevingen draaien, zoals ontwikkeling, staging of productie. Docker helpt door alles consistent te maken.
Belangrijkste voordelen:
- Consistentie Als je app op je laptop werkt, zal het ook in productie werken.
- Isolatie Als één container stopt met werken, blijven de anderen draaien.
- Draagbaarheid Je kunt je app op een Mac bouwen en op Linux of in de cloud draaien zonder wijzigingen aan te brengen.
- Efficiëntie Containers starten snel en gebruiken minder geheugen dan virtuele machines.
Hoe Docker-containers werken
Docker gebruikt een hoofdservice genaamd de Docker Engine om containers te bouwen en te draaien.
1. Docker Image
Een afbeelding is een sjabloon. Het bevat de instructies en bestanden die nodig zijn om een app te draaien.
2. Docker Registry
Afbeeldingen worden opgeslagen op locaties zoals Docker Hub. Je kunt afbeeldingen downloaden (pullen) of je eigen afbeeldingen uploaden (pushen).
3. Een Container Draaien
Wanneer je een afbeelding draait, wordt het een container. Deze container gebruikt gedeelde lagen, wat helpt om hem klein en snel te houden.
Docker Container vs Virtuele Machine
| Besturingssysteem | Deelt het host OS | Heeft zijn eigen OS |
|---|---|---|
| Grootte | Klein (MBs) | Groot (GBs) |
| Starttijd | Seconden | Minuten |
| Hulpbronnengebruik | Laag | Hoog |
Eenvoudig Voorbeeld
Stel je wilt een Python webapplicatie implementeren.
Zonder Docker: Je moet Python, Flask en andere tools op elke server installeren. Verschillende serverconfiguraties kunnen bugs veroorzaken.
Met Docker:
- Schrijf een Dockerfile
- Bouw de afbeelding
- Draai de container
De app zal overal op dezelfde manier draaien.
Wie Gebruikt Docker Containers?
- Ontwikkelaars: Om installatieproblemen op lokale machines te vermijden
- DevOps-teams: Om implementatie en schaalvergroting te automatiseren
- Beveiligingsteams: Om apps te isoleren en afbeeldingen te scannen voor release
Beste Praktijken
-
Eén app per container
Zorg ervoor dat elke container eenvoudig en gefocust is.
-
Gebruik vertrouwde afbeeldingen
Begin waar mogelijk met officiële afbeeldingen.
-
Houd afbeeldingen klein
Kleinere afbeeldingen draaien sneller en zijn meestal veiliger.
-
Scan op beveiligingsproblemen.
Controleer je afbeeldingen op bekende beveiligingsproblemen
Gerelateerde Termen
- Kubernetes
- Container orchestratie
- Microservices
- CI/CD-pijplijn
- CI/CD-beveiliging
FAQ
Is Docker hetzelfde als een virtuele machine?
Nee. Containers delen het besturingssysteem. Virtuele machines doen dat niet.
Waar kunnen Docker-containers draaien?
Op laptops, servers of bij elke grote cloudprovider.
Zijn Docker-containers veilig?
Ze bieden isolatie, maar de beveiliging hangt af van hoe beelden worden gebouwd en gescand.
Wat is het verschil tussen een image en een container?
Een image is een sjabloon. Een container is een draaiende app gemaakt van dat sjabloon.