1. Docker - Roxane90/IT-Landscape GitHub Wiki
Docker is een platform dat gebruikt wordt door ontwikkelaars en systeembeheerders om containers te bouwen, uit te voeren en te beheren.
Een Docker container bevat alles om een applicatie te laten draaien: code, bibliotheken, configuratiebestanden en meer. Het bijzondere aan een container is dat het lichtgewicht en geïsoleerd is, wat tal van voordelen oplevert.
De doorbraak van Docker heeft een groot verschil gemaakt in hoe softwareapplicaties worden ontwikkeld, verdeeld en uitgevoerd. Hiervoor werd gebruik gemaakt van Virtuele Machines (zie verder).
- platform-onafhankelijk: Docker containers werken onafhankelijk van het onderliggende besturingssysteem. De applicatie draait hierdoor overal op dezelfde manier, ongeacht de computer of het besturingssysteem, doordat de omgeving in de container zelf zit.
- Compact en lichtgewicht: Containers hebben geen volledig besturingssysteem nodig zoals virtuele machines.
- Efficiënt: Containers delen de resources van de host zonder zware overhead.
- Geautomatiseerd: Beveiligingsupgrades en deployments zijn eenvoudig te automatiseren.
- Geïsoleerd: Containers zijn van elkaar afgescheiden, wat de veiligheid en stabiliteit verhoogt.
- Minder IT-beheer nodig: Er zijn minder configuratieproblemen en infrastructuur betrokken.
- Minder code nodig voor verplaatsing: De containers draaien identiek op verschillende omgevingen.
Docker containers zijn dus ideaal voor softwareontwikkeling, omdat flexibiliteit en snelheid mogelijk maken.
DotCloud (nu Docker Inc) heeft Docker gelanceerd in 2013. Hoewel de technologie van containers al langer bestond, heeft Docker het toegankeljiker en gestandaardiseerd gemaakt.
In 2013 werd Docker door critici nog bestempeld als een hype, maar intussen heeft het haar plaats verworven als standaardtool binnen softwareontwikkeling. Docker containers worden vandaag breed ondersteund door grote cloudproviders zoals Google Cloud, AWS en Microsoft Azure.
Om helemaal te begrijpen wat de toegevoegde waarde is van containers, is het handig om te kijken naar hoe het hiervoor was.
Een Virtuele Machine (VM) wordt gebruikt om taken uit te voeren die risicovol kunnen zijn op een fysieke computer. Omdat een VM geïsoleerd is van de rest van het systeem, kan software binnen de VM geen schade toebrengen aan de hostcomputer.
Een VM is in feite een softwarematige computer die binnen een fysieke computer draait. Een hostcomputer kan meerdere VM's tegelijkertijd uitvoeren. Elke VM heeft zijn eigen virtuele hardware, zoals CPU's, geheugen, netwerkinterfaces en harde schijven.
Hoewel VM's nuttig zijn, hebben ze ook nadelen. Ze nemen veel systeembronnen in beslag en hebben een langere opstarttijd. Docker-containers daarentegen delen de kernel van het host-besturingssysteem, waardoor ze sneller en lichter zijn.
Voordelen Docker:
-
Sneller opstarten
-
Kleinere bestanden
-
Gemakkelijk te delen
-
Makkelijk te schalen
Nadelen VM:
- Trager
- Zwaarder
- Complexer
Bron afbeelding: https://www.learnovita.com/ gedownload op 23/03/2025
Docker wordt voor veel dingen gebruikt. Enkele voorbeelden zijn:
-
Softwareontwikkeling en testen Ontwikkelaars gebruiken Docker om applicaties in een geïsoleerde omgeving te bouwen en testen. Het grote voordeel is dat het overal hetzelfde zal werken, ongeacht het besturingssysteem van de ontwikkelaar.
-
Deployment en opschalen Bedrijven gebruiken Docker om applicaties snel en efficiënt op servers te plaatsen. De containers zijn licht om plaatsen en starten snel op. Ze kunnen bovendien eenvoudig opgeschaald worden als er op termijn (veel) meer gebruikers zijn.
-
Microservices Grote applicaties worden soms met Docker opgesplitst in kleine onderdelen, die apart draaien in Docker-containers. Op deze manier is de applicatie flexibeler en makkelijker te onderhouden.
-
Cloud computing Docker wordt gebruikt door AWS, Google Cloud en Microsoft Azure om applicaties snel op verschillende servers te laten draaien. Dankzij Docker is de applicatie minder afhankelijk van een specifieke hardware of een bepaalde cloudprovider.
-
Databases Je kunt een database zoals MySQL of PostgreSQL in een container draaien. Zo heb je snel een werkende database, zonder dat je je eigen systeem hoeft aan te passen.
Docker beginnen gebruiken is eenvoudig en gratis. Je moet eerst en vooral Docker Desktop downloaden en installeren.
- Ga naar https://docs.docker.com/desktop/
- Scroll naar beneden tot je 'Install Docker Desktop' tegenkomt.
- Kies de juiste versie: Mac, Windows of Linux.
- Download het installatiebestand en doorloop de installatie.
Na de installatie:
- Start Docker Desktop via het Startmenu (Windows) of de Applicaties-map (macOS)
- De eerste keer dat je dit doet moet je een Docker-account aanmaken of je inloggen. Registreer je via https://hub.docker.com/signup .
- Controleer of de installatie correct is verlopen door Docker Desktop op te starten en het commando docker --version uit te voeren in een terminal. Je zou het volgende resultaat te zien moeten krijgen:
Start een container met een specifieke image.
Dit commando zoekt eerst lokaal naar de image, bijvoorbeeld hello-world. Als dit niet bestaat, downloadt Docker het van Docker Hub. Hierna start de container op en voert het de standaardinstructies uit.
Extra opties die je kan meegeven:
- -d | Draai de container op de achtergrond, in detached mode.
- --name <container_naam> | Geef de container een herkenbare naam
- -p : | Forward een poort, bijvoorbeeld 8080:80 voor webapplicaties
- -v : | Mount een volume
Toon actieve containers.
Dit commando geeft je een lijst van actieve containers. Om ook de gestopte containers te zien gebruik je docker ps -a .
Stop een actieve container.
Tip: als je niet meer zeker bent over de naam, gebruik dan het commando docker ps nog eens.
Verwijder een container.
Tip: de container moet gestopt zijn voordat je die kan verwijderen.
Toon de lokaal beschikbare images.
Verwijder een image.
Je kan een image verwijderen als er geen container, lopend noch gestopt, meer op gebaseerd is.
Een Dockerfile is een tekstbestand waarin je stap voor stap beschrijft hoe een Dicker-image mote worden gebouwd.
Bijvoorbeeld:
- FROM: Van welke base image begin je?
- WORKDIR: Hiermee stel je je werkomgeving in, je creëert een directory voor je app.
- COPY en RUN: Kopieer en installeer je dependencies.
- EXPOSE: Bepaal de te gebruiken poort.
- CMD: Geef aan met welk commando de app wordt gestart.
Eens je een Dockerfile hebt gemaakt, kan je een image bouwen met het volgende commando: docker build -t naam-van-je-app .
Docker Compose is een tool waarmee je meerdere containers kunt beheren met een enkel configuratiebestand, met de naam docker-compose.yml.
Dit komt van pas bij multi-container Docker-applicaties: je bundelt de configuraties in een YAML-bestand.
Wanneer je verschillende containers combineert, vormen ze samen 1 stack. Elke container in de stack is een service.
Een service in Docker Compose vertegenwoordigt dus een container met een specifieke taak als onderdeel van de applicatie, zoals de webserver, database of cache-service.
Voorbeeld van een eenvoudige docker-compose.yml:
-
Om de containers op te starten gebruik je het commando docker-compose up -d . Dankzij -d of detached mode draaien de containers op de achtergrond. De terminal blijft vrij voor andere commando's.
-
Om de containers te stoppen, gebruik je het commando docker-compose down .