Docker Compose heeft de manier waarop ontwikkelaars containerized applicaties benaderen fundamenteel veranderd, vooral wanneer meerdere onderling afhankelijke services moeten worden gecoördineerd. Deze tool vervangt handmatig containerbeheer door een gestructureerde, YAML-gestuurde workflow, waarmee teams volledige applicatie-architecturen in één configuratiebestand kunnen definiëren.
Voor Ubuntu-omgevingen betekent dit reproduceerbare deployments, eenvoudiger schalen en minder operationele overhead. Deze handleiding biedt een frisse kijk op de installatie en het gebruik van Docker Compose en geeft diepere inzichten in de praktische implementatie.
Voordat je met deze tutorial begint, moet het volgende zijn geregeld:
Implementeer een Ubuntu cloud server-instance bij Hostman.
Zorg dat je een gebruikersaccount hebt met sudo-rechten of root-toegang, zodat je pakketten kunt installeren en Docker kunt beheren.
Docker moet geïnstalleerd zijn en actief draaien op de server, aangezien Docker Compose bovenop de Docker Engine werkt.
Moderne applicaties bestaan vaak uit meerdere onderling verbonden componenten, zoals API’s, databases en caching-lagen. Het afzonderlijk beheren van deze onderdelen met Docker-commando’s wordt al snel omslachtig naarmate de complexiteit toeneemt. Docker Compose lost dit op door alle services, netwerken en opslagvereisten te declareren in één docker-compose.yml-bestand. Deze aanpak zorgt voor consistentie tussen omgevingen—of je nu lokaal op een Ubuntu-machine werkt of op een cloudserver.
Neem bijvoorbeeld een webapplicatie met een Node.js-backend, een PostgreSQL-database en een Redis-cache. Zonder Docker Compose vereist elk onderdeel een aparte docker run-opdracht met nauwkeurige netwerkparameters. Met Compose worden deze relaties één keer vastgelegd, waardoor je de applicatie met één enkele opdracht kunt starten en stoppen.
Volg deze stappen om Docker Compose op je Ubuntu-systeem te installeren.
Docker Compose functioneert als een uitbreiding van Docker, dus controleer eerst de status:
sudo systemctl status docker
Als de service niet actief is, start deze met:
sudo systemctl start docker
Werk de pakketlijsten bij om toegang te krijgen tot de nieuwste softwareversies:
sudo apt-get update
Voor veilige communicatie met de Docker-repositories zijn deze pakketten vereist:
sudo apt-get install ca-certificates curl
Authenticeer Docker-pakketten door de cryptografische sleutel toe te voegen:
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
Deze stap zorgt ervoor dat pakketten tijdens het transport niet zijn gewijzigd.
Voeg het Docker-repository toe dat past bij jouw Ubuntu-versie:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Het commando detecteert automatisch de juiste Ubuntu-versie via VERSION_CODENAME.
Werk de repositories bij en installeer de Compose-extensie:
sudo apt update
sudo apt-get install docker-compose-plugin
Controleer of Docker Compose correct is geïnstalleerd:
docker compose version
Voorbeeldoutput:
Docker Compose version v2.33.0
We implementeren een eenvoudige webserver met Nginx om de mogelijkheden van Docker Compose te demonstreren.
Maak een aparte werkmap aan:
mkdir ~/compose-demo && cd ~/compose-demo
Maak het configuratiebestand aan:
nano docker-compose.yml
Voeg de volgende inhoud toe:
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./app:/usr/share/nginx/html
Uitleg:
services: Hoofdelement waarin containers worden gedefinieerd
web: Aangepaste servicenaam
image: Alpine-gebaseerde Nginx-image met een kleine footprint
ports: Koppelt hostpoort 8080 aan containerpoort 80
volumes: Synchroniseert de lokale app-map met de webroot van de container
Maak de HTML-structuur:
mkdir app
nano app/index.html
Voeg deze HTML toe:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Docker Compose Test</title>
</head>
<body>
<h1>Hello from Docker Compose!</h1>
</body>
</html>
docker compose up -d
Docker Compose downloadt automatisch de Nginx-image indien nodig en configureert het netwerk.
docker compose ps -a
Ga lokaal naar http://localhost:8080 of op een externe server naar http://<SERVER_IP>:8080. De testpagina zou zichtbaar moeten zijn.
Bij problemen kun je de logs bekijken:
docker compose logs web
Containers tijdelijk stoppen:
docker compose stop
Alle projectresources verwijderen:
docker compose down
Deze commando’s breiden het containerbeheer verder uit:
docker compose up --build – Images opnieuw bouwen vóór het starten
docker compose pause – Containers pauzeren zonder ze te beëindigen
docker compose top – Actieve processen in containers tonen
docker compose config – De samengestelde configuratie valideren en bekijken
docker compose exec – Commando’s uitvoeren in actieve containers
(bijv. docker compose exec web nginx -t om de Nginx-configuratie te testen)
Docker Compose maakt van multi-container-orkestratie een gestroomlijnd en herhaalbaar proces in plaats van een handmatige en foutgevoelige taak. Door Docker Compose te installeren, services in YAML te definiëren en de essentiële commando’s te gebruiken, kun je complexe applicaties met vertrouwen beheren.