Bijgewerkt op 15 augustus 2026.
Voordat ik Docker ontdekte, vond ik het altijd een worsteling om applicaties op mijn server te installeren. Het kostte veel tijd om alle afhankelijkheden correct te configureren en conflicten tussen verschillende applicaties te voorkomen. Met Docker veranderde alles: applicaties zijn nu snel en eenvoudig te implementeren, en mijn servers blijven georganiseerd en schoon.
Wat is Docker?
Docker is een open-source platform waarmee je applicaties kunt bouwen, distribueren en uitvoeren in containers. Containers zijn lichtgewicht, geïsoleerde omgevingen waarin een applicatie samen met de benodigde software, bibliotheken en afhankelijkheden kan draaien.
Het grote voordeel daarvan is dat een applicatie vrijwel hetzelfde kan draaien op je eigen computer, een testserver of een productieserver. Je bent veel minder afhankelijk van de specifieke configuratie van het onderliggende systeem.
Wat kun je doen met Docker?
- Applicaties isoleren: draai meerdere applicaties met verschillende afhankelijkheden op dezelfde server zonder dat ze elkaar in de weg zitten.
- Schaalbaarheid: start eenvoudig meerdere containers wanneer een applicatie meer capaciteit nodig heeft.
- Gemakkelijk testen: bouw lokaal een omgeving die sterk lijkt op je productieserver.
- Portabiliteit: verplaats containers relatief eenvoudig tussen verschillende systemen.
- Snelle implementatie: nieuwe applicaties kunnen vaak binnen enkele minuten worden gestart.
Docker installeren op een Ubuntu-server
In dit voorbeeld gebruik ik Ubuntu Server. Docker ondersteunt onder andere actuele versies van Ubuntu LTS en levert hiervoor een eigen officiële pakketrepository.
Stap 1: Werk Ubuntu bij
sudo apt update
sudo apt upgrade -y
Stap 2: Voeg de officiële Docker-repository toe
Installeer eerst de benodigde pakketten:
sudo apt install ca-certificates curl
Maak vervolgens de directory voor de sleutelbestanden aan:
sudo install -m 0755 -d /etc/apt/keyrings
Download de officiële Docker GPG-sleutel:
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
Voeg daarna de Docker-repository toe:
sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
Werk daarna opnieuw de pakketlijst bij:
sudo apt update
Stap 3: Installeer Docker Engine en Docker Compose
We installeren Docker Engine, de commandoregeltools, containerd, Docker Buildx en de moderne Docker Compose-plugin:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Controleer daarna of de Docker-service actief is:
sudo systemctl status docker
Je kunt de installatie ook testen met de officiële testcontainer:
sudo docker run hello-world
Als alles goed is gegaan, krijg je een melding dat Docker correct is geïnstalleerd en dat de testcontainer succesvol is uitgevoerd.
Stap 4: Controleer Docker Compose
Docker Compose wordt tegenwoordig als plugin van Docker geïnstalleerd. Het oude losse commando docker-compose is daarom niet meer nodig.
Controleer de installatie met:
docker compose version
Let daarbij op de spatie: tegenwoordig gebruiken we docker compose en niet meer docker-compose.
Stap 5: Voeg je gebruiker eventueel toe aan de Docker-groep
Standaard moet je Docker-commando’s als root of met sudo uitvoeren. Je kunt je eigen gebruiker toevoegen aan de Docker-groep, zodat je Docker zonder sudo kunt gebruiken:
sudo usermod -aG docker $USER
Log daarna uit en opnieuw in om de wijziging actief te maken.
Let op: gebruikers die lid zijn van de Docker-groep krijgen in de praktijk zeer vergaande rechten op het systeem, vergelijkbaar met rootrechten. Voeg daarom alleen vertrouwde gebruikers aan deze groep toe. Wie Docker zonder zulke rechten wil gebruiken, kan ook kijken naar Docker Rootless Mode.
Docker en je firewall
Gebruik je UFW of een andere firewall op je server, dan is er nog iets belangrijks om rekening mee te houden. Poorten die je met Docker publiceert, bijvoorbeeld met -p 8080:80, kunnen Docker-firewallregels gebruiken waardoor het verkeer niet altijd op de manier wordt verwerkt die je van UFW verwacht.
Open daarom niet zomaar containerpoorten naar het internet. Controleer bij een productieserver altijd welke poorten daadwerkelijk bereikbaar moeten zijn en hoe je firewall en Docker-netwerken zijn ingericht.
Basis Docker-commando’s
Containermanagement
Een container starten:
docker run [options] image_name
Een eenvoudig voorbeeld met Nginx:
docker run -d -p 8080:80 nginx
Hierbij draait Nginx op poort 80 in de container en wordt die poort op de server beschikbaar gemaakt via poort 8080.
Bekijk actieve containers:
docker ps
Bekijk alle containers, inclusief gestopte containers:
docker ps -a
Stop een container:
docker stop container_id
Verwijder een container:
docker rm container_id
Imagemanagement
Een Docker-image is een kant-en-klaar pakket dat alles bevat wat nodig is om een applicatie te draaien. Een image kun je zien als de blauwdruk waaruit één of meerdere containers worden gemaakt.
Bekijk de images die op je systeem aanwezig zijn:
docker images
Download een image:
docker pull image_name
Verwijder een image:
docker rmi image_name
Logs bekijken
Wil je zien wat een container doet of een probleem opsporen, bekijk dan de logs:
docker logs container_id
Wil je de logs live blijven volgen, gebruik dan:
docker logs -f container_id
Een shell openen in een draaiende container
Wanneer een container Bash bevat, kun je bijvoorbeeld een interactieve shell openen met:
docker exec -it container_id bash
Sommige kleinere containers bevatten geen Bash. In dat geval kun je vaak sh gebruiken:
docker exec -it container_id sh
Docker-versie controleren
docker version
Voorbeeld: Nginx Proxy Manager installeren
Nginx Proxy Manager is een gebruiksvriendelijke applicatie waarmee je reverse proxies kunt configureren en beheren via een webinterface. Je kunt hiermee bijvoorbeeld meerdere websites en applicaties achter één server-IP bereikbaar maken en eenvoudig SSL-certificaten van Let’s Encrypt aanvragen.
Voor een eenvoudige installatie hoeft Nginx Proxy Manager tegenwoordig geen aparte MySQL- of MariaDB-container meer te gebruiken. De applicatie kan standaard SQLite gebruiken. Daardoor is het Docker Compose-bestand een stuk eenvoudiger dan vroeger.
Stap 1: Maak een map voor Nginx Proxy Manager
mkdir -p ~/proxy-manager
cd ~/proxy-manager
Stap 2: Maak het Compose-bestand
Maak met bijvoorbeeld Nano een bestand met de naam docker-compose.yml:
nano docker-compose.yml
Voeg vervolgens de volgende inhoud toe:
services:
app:
image: 'jc21/nginx-proxy-manager:2.15.1'
restart: unless-stopped
ports:
- '80:80'
- '443:443'
- '81:81'
environment:
TZ: "Europe/Amsterdam"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
In dit voorbeeld gebruiken we de versie van Nginx Proxy Manager die op het moment van bijwerken van dit artikel in de officiële documentatie wordt gebruikt. Controleer bij een nieuwe installatie eventueel de documentatie van Nginx Proxy Manager voor de actuele versie.
De drie poorten hebben ieder hun eigen functie:
- Poort 80: normaal HTTP-verkeer.
- Poort 443: beveiligd HTTPS-verkeer.
- Poort 81: de beheerinterface van Nginx Proxy Manager.
Stap 3: Start Nginx Proxy Manager
Start de container vanuit de map waarin het Compose-bestand staat:
docker compose up -d
Docker downloadt automatisch de benodigde image en start Nginx Proxy Manager op de achtergrond.
Controleer of de container draait:
docker compose ps
Als je tijdens de eerste start wilt meekijken met de initialisatie, kun je de logs volgen:
docker compose logs -f
Stap 4: Open de beheerinterface
Open een browser en ga naar:
http://<jouw-server-ip>:81
Bij de eerste start maakt Nginx Proxy Manager automatisch de database, de benodigde sleutels en een standaard administratoraccount aan. De initialisatie kan afhankelijk van de server even duren.
Volg daarna de aanwijzingen in de beheerinterface om het administratoraccount veilig in te stellen en je eerste Proxy Host aan te maken.
Nginx Proxy Manager bijwerken
Een groot voordeel van Docker is dat het bijwerken van applicaties vaak eenvoudig is. Ga voor Nginx Proxy Manager naar de map waarin je Compose-bestand staat:
cd ~/proxy-manager
Haal vervolgens de nieuwere container-image op en laat Docker Compose de container opnieuw maken:
docker compose pull
docker compose up -d
Je configuratie, database en Let’s Encrypt-gegevens blijven in de gekoppelde directories data en letsencrypt op de host opgeslagen.
Controleer vóór grotere upgrades wel altijd even de release-informatie van Nginx Proxy Manager. Soms kan een specifieke versie aanvullende stappen vereisen.
Tot slot
Met Docker kun je relatief eenvoudig complexe applicaties draaien zonder je complete serversysteem vol te installeren met allerlei losse afhankelijkheden. Containers houden applicaties grotendeels van elkaar gescheiden en maken installeren, testen, verwijderen en bijwerken een stuk overzichtelijker.
Nginx Proxy Manager is daar een mooi praktisch voorbeeld van. Met één klein Docker Compose-bestand heb je een grafische reverse proxy waarmee je meerdere webdiensten kunt beheren en SSL-certificaten kunt gebruiken.
Docker is natuurlijk veel uitgebreider dan wat ik in dit artikel kan behandelen, maar met de voorbeelden hierboven heb je een goede basis om zelf verder te experimenteren.
Handige links en documentatie
Docker Engine installeren op Ubuntu:
https://docs.docker.com/engine/install/ubuntu/
Docker-documentatie:
https://docs.docker.com/
Docker Hub:
https://hub.docker.com/
Docker Compose-documentatie:
https://docs.docker.com/compose/
Docker post-installatiestappen voor Linux:
https://docs.docker.com/engine/install/linux-postinstall/
Nginx Proxy Manager – installatie:
https://nginxproxymanager.com/setup/
Nginx Proxy Manager – upgraden:
https://nginxproxymanager.com/upgrading/