Docker installeren op Debian: een complete installatiegids
Deze gids behandelt vier installatiemethoden, van de officiële Docker-repository tot handmatige pakketinstallatie, plus essentiële configuratie na installatie voor enterprise-deployments. Je leert je Docker-omgeving te beveiligen, veelvoorkomende problemen op te lossen en een productieklare setup te onderhouden.
Docker installeren op Debian zou geen gokspel moeten zijn over welke methode je systeem niet breekt.
De meeste gidsen gooien meerdere installatiemogelijkheden naar je zonder uit te leggen wanneer je welke gebruikt. Je eindigt met verouderde pakketten uit de Debian-repository of, nog erger, permissiefouten die je buitensluiten van je eigen containers. Het resultaat? Je bent uren aan het troubleshooten in plaats van applicaties te deployen.
Debians voorspelbare releasecyclus en rotsvaste stabiliteit maken het perfect voor Docker in productie. Je krijgt consistente containerprestaties zonder verrassingsupdates die je setup breken. In theorie zou je na het lastige deel — de installatie — geen problemen meer moeten hebben.
In deze tutorial neem ik je mee langs vier installatiemethoden, essentiële beveiligingsversteviging, opslagconfiguratie en stappen voor troubleshooting om Docker betrouwbaar op Debian te laten draaien.
Docker draait op de meeste moderne Debian-systemen, maar je moet eerst een paar zaken controleren. In deze sectie laat ik je precies zien wat je systeem nodig heeft voordat je start met installeren.
Debian 10 (Buster) of nieuwer is vereist voor actuele Docker-versies. Oudere releases zoals Debian 9 werken niet met recente Docker Engine-builds. Je kernelversie moet 3.10 of hoger zijn — de meeste Debian-installaties van de afgelopen jaren voldoen hier automatisch aan.
Je hebt root-toegang of sudo-rechten nodig om Docker-pakketten te installeren en het systeem te configureren. Docker vereist ook deze kernpakketten: apt-transport-https, ca-certificates, curl en gnupg. De meeste Debian-systemen hebben deze al, maar je verifieert dit proces later.
Hardwarevereisten zijn minimaal:
2GB RAM om basale containerworkloads aan te kunnen; 4GB of meer werkt beter voor ontwikkelomgevingen
10GB vrije schijfruimte is het minimum voor Docker-images en containerdata. Productieomgevingen moeten voor veel meer plannen.
Als je de GNOME-desktop gebruikt, zorg dan dat het pakket gnome-terminal is geïnstalleerd. Sommige Docker-beheertools verwachten dit voor interactieve containersessies.
Verwijder oude Docker-installaties voordat je begint. Legacy-pakketten zoals docker, docker.io of docker-engine kunnen conflicteren met de huidige Docker Engine. Voer dit commando uit om oude versies op te ruimen:
Je firewall- en netwerkconfiguratie kan invloed hebben op containernetwerken. Docker maakt eigen netwerkinterfaces en iptables-regels aan. Als je UFW of aangepaste firewallregels gebruikt, moet je die na installatie mogelijk aanpassen om containerverkeer toe te staan.
Controleer deze vereisten nu — dat bespaart je later tijd met troubleshooting.
Installatiemethoden
Je hebt vier manieren om Docker op Debian te installeren, elk met eigen afwegingen. Ik help je de methode te kiezen die past bij jouw omgeving en beveiligingseisen.
Zoek je in plaats daarvan Ubuntu-instructies? We hebben een complete stapsgewijze gids voor Docker installeren op Ubuntu.
Met deze methode krijg je de nieuwste Docker-versie met regelmatige beveiligingsupdates.
De officiële Docker-repository bevat altijd de nieuwste stabiele releases, plus je krijgt automatische updates via je pakketbeheerder. Je zit niet vast aan verouderde versies die belangrijke beveiligingspatches of nieuwe features missen.
Begin met het updaten van je systeem en het installeren van de pakketten die Docker nodig heeft:
sudoapt update
sudoaptinstall apt-transport-https ca-certificates curl gnupg lsb-releaseMogelijk gemaakt door
Voeg vervolgens Docker's officiële GPG-sleutel toe om de echtheid van pakketten te verifiëren:
curl-fsSL https://download.docker.com/linux/debian/gpg |sudo gpg --dearmor-o /usr/share/keyrings/docker-archive-keyring.gpgMogelijk gemaakt door
Configureer de repository door deze toe te voegen aan je sources-lijst:
echo"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable"|sudotee /etc/apt/sources.list.d/docker.list > /dev/nullMogelijk gemaakt door
Installeer tot slot Docker Engine, CLI en Compose:
sudoapt update
sudoaptinstall docker-ce docker-ce-cli containerd.io docker-compose-pluginMogelijk gemaakt door
Dit geeft je alles wat je nodig hebt voor Docker-deployments in productie.
Methode 2: Standaard Debian-repository
Deze aanpak installeert Docker met één commando, maar je krijgt een oudere versie.
Debians standaardrepository maakt installeren eenvoudig — voer gewoon sudo apt install docker.io uit. Maar er is een addertje: vaak krijg je Docker-versies die maanden of jaren achterlopen op de huidige release.
Deze methode is prima voor basistests of wanneer je een specifieke oudere versie nodig hebt voor compatibiliteit. Maar je mist beveiligingsupdates, prestatieverbeteringen en nieuwe features die met recente Docker-releases meekomen.
Gebruik deze methode alleen als de officiële repository geen optie is.
Methode 3: Handmatige DEB-pakketinstallatie
Ik laat je zien hoe je pakketten direct downloadt en installeert wanneer je geen toegang hebt tot repositories.
Deze methode werkt voor air-gapped systemen, bedrijfsnetwerken met beperkte internettoegang, of wanneer je dezelfde Docker-versie op meerdere machines wilt installeren zonder herhaaldelijk te downloaden.
Download de DEB-pakketten van Docker's website:
Ga naar https://download.docker.com/linux/debian/dists/
Kies je Debian-versie (bullseye, bookworm, enz.)
Navigeer naar pool/stable/amd64/
Download deze pakketten: docker-ce_*.deb, docker-ce-cli_*.deb en containerd.io_*.deb
Installeer de pakketten in deze volgorde:
sudo dpkg -i containerd.io_*.deb
sudo dpkg -i docker-ce-cli_*.deb
sudo dpkg -i docker-ce_*.debMogelijk gemaakt door
Krijg je afhankelijkheidsfouten, voer dan sudo apt-get install -f uit om ze op te lossen.
Deze methode vergt meer handwerk voor updates, maar geeft je volledige controle over welke versie wordt geïnstalleerd.
Methode 4: Convenience-scripts
De laatste methode die ik behandel biedt snelle installatie voor testomgevingen, maar je moet het script eerst auditen.
Docker levert installatiescripts die je systeem detecteren en Docker automatisch installeren. Handig om snel testomgevingen op te zetten of wanneer je Docker op meerdere systemen inricht.
Gebruik convenience-scripts niet in productie. Ze zijn bedoeld voor snelle setup, niet voor veilige, reproduceerbare deployments. Houd je voor kritieke systemen aan de methode met de officiële repository.
Ik raad de officiële repositorymethode aan, tenzij je specifieke beperkingen hebt die een andere aanpak vereisen.
Je installatie verifiëren
Installeren is slechts de eerste stap — je moet bevestigen dat Docker echt werkt voordat je iets deployt. Deze snelle tests vertellen je of je Docker-setup klaar is voor echte workloads.
Controleer je Docker-versie om te bevestigen dat de installatie voltooid is:
Je zou uitvoer moeten zien zoals Docker version xx.x.x, build x. Krijg je een "command not found"-fout, dan is Docker niet goed geïnstalleerd of staat het niet in je PATH.
Haal gedetailleerde buildinformatie op om te zien welke componenten draaien:
Docker downloadt de hello-world-image en voert die uit. Je ziet een bericht dat uitlegt hoe Docker-containers werken als alles correct functioneert. Deze test bevestigt dat Docker images kan pullen, containers kan aanmaken en commando's kan uitvoeren.
Je kunt verifiëren dat Docker Compose is geïnstalleerd en werkt:
Je zou uitvoer moeten zien zoals Docker Compose version vX.xx.x. Let op dat nieuwere Docker-installaties docker compose (met een spatie) gebruiken in plaats van het oude docker-compose-commando.
Als al deze commando's zonder fouten werken, is je Docker-installatie klaar voor productiegebruik.
Docker werkt out-of-the-box, maar je wilt een paar dingen configureren voor dagelijks gebruik. In deze sectie behandel ik servicemanagement en gebruikersrechten die Docker handiger en veiliger maken.
Servicemanagement
Je kunt bepalen wanneer Docker draait met deze systemd-commando's:
sudo systemctl start docker# Start Dockersudo systemctl stop docker# Stop Dockersudo systemctl restart docker# Restart Docker serviceMogelijk gemaakt door
Om Docker automatisch te laten starten bij het booten van je systeem, voer je het volgende uit:
Maar hier zit het beveiligingscompromis: gebruikers in de docker-groep hebben root-equivalente toegang tot je systeem. Ze kunnen hostmappen mounten, bij gevoelige bestanden, en mogelijk containers ontsnappen om de host te compromitteren.
Voeg alleen vertrouwde gebruikers toe aan de docker-groep, en doe dit nooit op gedeelde systemen waar je niet alle gebruikers beheert.
Configureer deze instellingen één keer en Docker wordt dagelijks veel prettiger in gebruik.
Opslagdriverconfiguratie
De opslagdriver van Docker beheert hoe containerimages en -data op je systeem worden opgeslagen. De meeste gebruikers hoeven dit nooit te wijzigen, maar je opties begrijpen helpt prestaties te optimaliseren voor specifieke workloads.
Docker kiest automatisch de beste opslagdriver voor je systeem tijdens de installatie. Op Debian is dat meestal overlay2, dat uitstekende prestaties en stabiliteit biedt voor de meeste use-cases.
Controleer je huidige opslagdriver met dit commando:
Snel copy-on-write-bewerkingen afhandelt wanneer containers bestanden wijzigen
Lagen tussen images deelt om schijfruimte te besparen
Alle Docker-features ondersteunt zonder compatibiliteitsproblemen
Betrouwbaar werkt op verschillende bestandssystemen
Je hebt mogelijk een andere opslagdriver nodig als je gespecialiseerde workloads draait of specifieke bestandssysteemvereisten hebt.
Sommige enterprise-opslagsystemen werken bijvoorbeeld beter met de devicemapper-driver, of je hebt vfs nodig om problemen met containerbestandssystemen te debuggen.
Je kunt de opslagdriver wijzigen door de configuratie van de Docker-daemon te bewerken:
Wees je ervan bewust dat het wijzigen van opslagdrivers je bestaande containers en images ontoegankelijk maakt. Maak eerst een back-up van belangrijke data, of exporteer containers die je wilt bewaren.
Je kunt de nieuwe driver nu testen door een image te pullen en een container te draaien:
Kort gezegd: blijf bij overlay2 tenzij je specifieke vereisten hebt die een andere driver noodzakelijk maken.
Beveiligingsversteviging
Standaard Docker-installaties zijn prima voor ontwikkeling, maar productieomgevingen hebben extra beveiligingslagen nodig. Deze configuraties beschermen je host tegen containeruitbraken en aanvallen die resources uitputten.
SELinux/AppArmor-integratie
Verplichte toegangscontroles voegen een beveiligingslaag toe die beperkt wat containers kunnen doen, zelfs als ze gecompromitteerd zijn. Zonder deze controles kan een container die als root draait mogelijk bij hostresources waar hij niet aan mag komen.
Je kunt AppArmor inschakelen voor Docker, Debians standaard beveiligingsframework, door deze commando's uit te voeren:
sudoaptinstall apparmor-utils
sudo systemctl enable apparmor
sudo systemctl start apparmorMogelijk gemaakt door
Zodra AppArmor draait, laad je Docker's beveiligingsprofiel:
Het docker-default-profiel beperkt container-capabilities zoals bestandssystemen mounten, toegang tot ruwe netwerkinterfaces en het laden van kernelmodules.
Voor SELinux-systemen (als je dat gebruikt in plaats van AppArmor), schakel eerst containerbeheer in:
Deze controls blokkeren veelvoorkomende container-escapetechnieken en beperken de schade van gecompromitteerde containers.
Daemonconfiguratie
Je kunt (en moet) Docker-daemoninstellingen aanpassen om het aanvalsoppervlak te verkleinen en je beveiligingshouding te verbeteren. Maak of bewerk het bestand /etc/docker/daemon.json:
{"live-restore":true,"userland-proxy":false,"no-new-privileges":true,"icc":false,"disable-legacy-registry":true}Mogelijk gemaakt door
Dit doet elke instelling:
live-restore: true houdt containers draaiend als de Docker-daemon crasht
userland-proxy: false gebruikt iptables direct in plaats van de userland-proxy voor betere performance
no-new-privileges: true voorkomt dat containers nieuwe privileges krijgen
icc: false schakelt inter-containercommunicatie standaard uit disable-legacy-registry: true blokkeert toegang tot oude, onveilige registryprotocollen
Herstart Docker na deze wijzigingen om ze toe te passen:
Dit beperkt wat gecompromitteerde containers met je systeem kunnen doen.
Resourcelimieten met control groups (cgroups)
Containers zonder resourcelimieten kunnen alle beschikbare CPU, geheugen en I/O opsouperen en uiteindelijk je hele host neerhalen. Control groups (cgroups) voorkomen dit door harde limieten op resourcegebruik af te dwingen.
Begin met geheugenlimieten om te voorkomen dat containers teveel RAM gebruiken:
Zelfs met een correcte installatie kan Docker haperingen krijgen waardoor containers niet goed draaien. Dit zijn de meest voorkomende problemen en hoe je ze snel oplost.
Permissiefouten
De meeste Docker-permissieproblemen komen erop neer dat je gebruiker geen juiste toegang heeft tot het socketbestand van Docker. Als je Got permission denied while trying to connect to the Docker daemon socket ziet, betekent dit dat je nog niet in de docker-groep zit.
Dit gebeurt omdat Docker als root draait, maar een socket maakt die leden van de docker-groep kunnen benaderen. Voeg jezelf toe aan de groep:
Bestandspermissiefouten binnen containers zijn anders maar net zo gebruikelijk. Deze ontstaan wanneer het containerproces geen bestanden kan lezen of schrijven die je vanaf je host hebt gemount. De container draait mogelijk als een ander gebruikers-ID dan de eigenaar van je bestanden.
Controleer welke gebruiker eigenaar is van je bestanden:
De meeste Docker-containers draaien standaard als gebruikers-ID 1000. Als je bestanden eigendom zijn van root of een andere gebruiker, wijzig dan het eigenaarschap:
Als je SELinux draait (in plaats van AppArmor), kun je andere permissieweigeringen zien die in de auditlogs verschijnen. Deze zijn complexer omdat SELinux bepaalt waar processen toegang toe hebben op basis van security-contexts, niet alleen gebruikers-ID's.
Los SELinux-contexten op door containerbeheer in te schakelen en correcte labels op je Docker-volumes te herstellen:
sudo setsebool -P container_manage_cgroup on
sudo restorecon -R /path/to/your/volumeMogelijk gemaakt door
Servicefouten
Als Docker niet wil starten of blijft crashen, moet je begrijpen wat er faalt voordat je het kunt oplossen. De systemd-servicestatus geeft snel overzicht:
Dit toont of Docker draait en recente foutmeldingen. Voor gedetailleerde troubleshooting wil je de live logs volgen terwijl Docker probeert te starten:
Een veelvoorkomende opstartfout treedt op wanneer Docker niet netjes is afgesloten. Je ziet een fout als "failed to start daemon: pid file found, ensure docker is not running." Er is dan een achtergebleven procesbestand dat het opstartscript in de war brengt.
Verwijder het oude bestand en probeer opnieuw te starten:
Opslagproblemen zijn een andere veelvoorkomende oorzaak van daemonfouten. Docker slaat alle data op in /var/lib/docker, en als deze map vol raakt of corrupt is, kan Docker niet goed starten.
Netwerkconflicten kunnen Docker ook verhinderen te starten. Dit gebeurt wanneer Docker's standaard bridge-netwerk (meestal 172.17.0.0/16) botst met je bestaande netwerk. Je ziet fouten over niet-beschikbare adresbereiken.
Los dit op door een aangepast bridge-IP te configureren dat niet conflicteert met je netwerk. Bewerk /etc/docker/daemon.json:
Docker is afhankelijk van Linux-kernelfeatures voor containerisatie, netwerken en beveiliging. Als je kernel te oud is, loop je tegen problemen aan die je niet kunt oplossen zonder te upgraden.
Controleer welke kernelversie je draait met dit commando:
Docker heeft minimaal kernel 3.10 nodig voor basisfunctionaliteit, maar voor productie wil je echt 4.0 of nieuwer. Alles ouder dan 3.10 werkt simpelweg niet met moderne Docker-versies.
Je kernel updaten op Debian is eenvoudig: installeer gewoon het nieuwste kernelpakket:
Soms is de kernel nieuw genoeg, maar zijn bepaalde kernelmodules niet geladen. Docker heeft specifieke modules nodig voor netwerk- en containerfeatures. Je ziet dan fouten over niet-beschikbare netwerkinterfaces of containers die niet goed starten.
Laad de essentiële modules handmatig:
sudo modprobe bridge
sudo modprobe ip_tables
sudo modprobe iptable_natMogelijk gemaakt door
Deze modules zouden automatisch moeten laden, maar als dat niet gebeurt, maak ze dan permanent door ze toe te voegen aan je systeemconfiguratie:
echo"bridge"|sudotee-a /etc/modules
echo"ip_tables"|sudotee-a /etc/modules
echo"iptable_nat"|sudotee-a /etc/modulesMogelijk gemaakt door
Zelfs met een recente kernel kun je runtime-fouten zien die "operation not supported" melden. Dit betekent meestal dat je kernel zonder bepaalde features is gecompileerd die Docker verwacht. Helaas is er geen workaround voor ontbrekende kernelfeatures — je hebt een correct geconfigureerde kernel nodig.
De meeste Docker-installatieproblemen zijn terug te voeren op deze drie gebieden: gebruikersrechten, serviceconfiguratie of kernelcompatibiliteit. Los het onderliggende probleem op in plaats van symptomen te omzeilen, en je Docker-omgeving wordt veel stabieler.
Soms moet je Docker volledig van je systeem verwijderen, of je nu overstapt op een andere containerruntime of schoon wilt beginnen na configuratieproblemen.
Dit proces omvat meer dan alleen pakketten verwijderen — je wilt ook data en systeemwijzigingen opruimen.
Begin met het verwijderen van alle Docker-pakketten van je systeem. Het exacte commando hangt af van hoe je Docker oorspronkelijk hebt geïnstalleerd.
Als je via de officiële Docker-repository hebt geïnstalleerd:
sudoapt purge docker-ce docker-ce-cli containerd.io docker-compose-pluginMogelijk gemaakt door
Als je via Debians standaardrepository hebt geïnstalleerd:
Dit verwijdert de pakketten, maar laat configuratiebestanden en afhankelijkheden achter die andere pakketten mogelijk nog nodig hebben. Om die ook te verwijderen:
Verwijder daarna de datamap van Docker als je alle images, containers en volumes wilt verwijderen. Deze stap is optioneel, maar aanbevolen voor een complete opschoning.
Docker slaat standaard alles op in /var/lib/docker. Deze map verwijderen wist al je containers, images, netwerken en volumes permanent:
Ga verder met het opschonen van systeemgroepen en -gebruikers die Docker tijdens de installatie heeft aangemaakt. Docker voegt een docker-groep toe aan je systeem en kan gebruikersrechten hebben aangepast.
Als je gebruikers aan de docker-groep hebt toegevoegd, wordt hun groepslidmaatschap automatisch opgeruimd wanneer je de groep verwijdert. Je kunt ook specifieke gebruikers handmatig uit de groep verwijderen voordat je deze wist:
Je hebt nu Docker draaiend op Debian, maar installatie is nog maar het begin. Hoe je je Docker-omgeving configureert en onderhoudt, bepaalt of je een soepele productie-ervaring hebt of nachtenlang containerproblemen aan het troubleshooten bent.
Kies je installatiemethode op basis van je beperkingen. De officiële Docker-repository werkt het best voor de meeste productieomgevingen omdat je de nieuwste features en beveiligingspatches krijgt. Maar air-gapped netwerken of eisen voor versieconsistentie kunnen handmatige DEB-installatie vereisen.
Beveilig je Docker-omgeving direct. Schakel AppArmor of SELinux in voor verplichte toegangscontrole, configureer restrictieve daemoninstellingen en gebruik cgroups om containerresources te beperken. Houd Docker up-to-date met automatische beveiligingsupdates, maar test ze eerst in staging.
Gebruik Docker Compose voor multi-container-applicaties. In plaats van complexe docker run-commando's te beheren, definieer je je applicatiestack in YAML.
Monitor schijfgebruik en ruim regelmatig op. Voer docker system prune uit om ongebruikte images te verwijderen en stel logrotatie in om te voorkomen dat containers je schijf vollopen.
Wanneer je meer gedetailleerde informatie nodig hebt, behandelt de officiële documentatie geavanceerde onderwerpen die deze gids niet raakt. Bekijk de Docker-documentatie voor diepgaande info over networking, storage drivers en orchestratie. De Debian Docker-pakketdocumentatie legt pakketspecifieke configuraties en bekende issues uit.
Docker op Debian geeft je een stabiel, krachtig platform voor gecontaineriseerde applicaties — maar alleen als je het doordacht configureert en consequent onderhoudt.
Wil je meer leren over Docker, containerization en de toepassing in data science en machine learning? Deze DataCamp-cursussen zijn je beste volgende stap:
Senior Data Scientist, gevestigd in Kroatië. Top Tech-schrijver met meer dan 700 gepubliceerde artikelen en meer dan 10 miljoen weergaven. Auteur van het boek Machine Learning Automation with TPOT.
FAQs
Wat is de beste manier om Docker op Debian te installeren voor productiegebruik?⌄
De methode met de officiële Docker-repository is de beste keuze voor productieomgevingen omdat die de nieuwste stabiele releases met regelmatige beveiligingsupdates biedt. Deze methode zorgt ervoor dat je alle nieuwste features en kritieke patches krijgt die mogelijk niet beschikbaar zijn in Debians standaardrepositories. Je profiteert ook van automatische updates via je pakketbeheerder, waardoor je Docker-installatie veilig blijft zonder handmatig ingrijpen.
Moet ik me zorgen maken over beveiliging bij het draaien van Docker op Debian?⌄
Ja, bij Docker-beveiliging komt meer kijken dan alleen de basisinstallatie. Containers delen de hostkernel, dus een gecompromitteerde container kan mogelijk bij hostresources als die niet goed is geïsoleerd. Je moet AppArmor of SELinux inschakelen voor verplichte toegangscontrole, resourcelimieten met cgroups configureren en containers waar mogelijk als niet-root draaien. Houd Docker bovendien up-to-date en voeg geen gebruikers toe aan de docker-groep tenzij strikt noodzakelijk, want dit geeft root-equivalente systeemtoegang.
Kan ik Docker draaien op oudere versies van Debian?⌄
Docker vereist Debian 10 (Buster) of nieuwer om met huidige Docker Engine-versies te werken. Oudere releases zoals Debian 9 missen de benodigde kernelfeatures en pakketafhankelijkheden die moderne Docker nodig heeft. Zit je vast aan een oudere Debian-versie, dan moet je eerst upgraden; er is geen betrouwbare workaround voor de ontbrekende kernelfunctionaliteit waarop Docker voor containerisatie en netwerking steunt.
Waarom start Docker niet na installatie en hoe los ik daemonproblemen op?⌄
Docker-daemonfouten komen meestal door drie hoofdoorzaken: opslagproblemen, netwerkconflicten of achtergebleven procesbestanden van eerdere installaties. Controleer of /var/lib/docker voldoende schijfruimte heeft met df -h /var/lib/docker, en ruim op met docker system prune -a indien nodig. Bij netwerkconflicten kan Docker's standaard bridge-IP (172.17.0.0/16) botsen met je bestaande netwerksetup, waardoor je een aangepast bridge-IP in /etc/docker/daemon.json moet configureren. Zie je "pid file found"-fouten, verwijder dan het oude bestand met sudo rm /var/run/docker.pid en herstart de service.
Hoe verwijder ik Docker en alle data correct van mijn Debian-systeem?⌄
Docker volledig verwijderen vereist meer dan alleen pakketten deïnstalleren — je moet ook datamappen, systeemgroepen en servicebestanden opruimen. Begin met het purgen van de Docker-pakketten met sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin, verwijder daarna de datamap met sudo rm -rf /var/lib/docker (dit verwijdert alle containers en images permanent). Verwijder de docker-groep met sudo groupdel docker, haal systemd-servicebestanden weg en controleer op overgebleven Docker-processen met ps aux | grep docker. Zo start je met een schone lei als je wilt herinstalleren of overstappen op een andere containerruntime.
Docker installeren op Debian zou geen gokspel moeten zijn over welke methode je systeem niet breekt.
De meeste gidsen gooien meerdere installatiemogelijkheden naar je zonder uit te leggen wanneer je welke gebruikt. Je eindigt met verouderde pakketten uit de Debian-repository of, nog erger, permissiefouten die je buitensluiten van je eigen containers. Het resultaat? Je bent uren aan het troubleshooten in plaats van applicaties te deployen.
Debians voorspelbare releasecyclus en rotsvaste stabiliteit maken het perfect voor Docker in productie. Je krijgt consistente containerprestaties zonder verrassingsupdates die je setup breken. In theorie zou je na het lastige deel — de installatie — geen problemen meer moeten hebben.
In deze tutorial neem ik je mee langs vier installatiemethoden, essentiële beveiligingsversteviging, opslagconfiguratie en stappen voor troubleshooting om Docker betrouwbaar op Debian te laten draaien.
Helemaal nieuw met Docker? Begin met de Docker-basisprincipes voordat je aan de installatie begint.
Systeemvereisten
Docker draait op de meeste moderne Debian-systemen, maar je moet eerst een paar zaken controleren. In deze sectie laat ik je precies zien wat je systeem nodig heeft voordat je start met installeren.
Debian 10 (Buster) of nieuwer is vereist voor actuele Docker-versies. Oudere releases zoals Debian 9 werken niet met recente Docker Engine-builds. Je kernelversie moet 3.10 of hoger zijn — de meeste Debian-installaties van de afgelopen jaren voldoen hier automatisch aan.
Je hebt root-toegang of sudo-rechten nodig om Docker-pakketten te installeren en het systeem te configureren. Docker vereist ook deze kernpakketten:
apt-transport-https,ca-certificates,curlengnupg. De meeste Debian-systemen hebben deze al, maar je verifieert dit proces later.Hardwarevereisten zijn minimaal:
Als je de GNOME-desktop gebruikt, zorg dan dat het pakket
gnome-terminalis geïnstalleerd. Sommige Docker-beheertools verwachten dit voor interactieve containersessies.Verwijder oude Docker-installaties voordat je begint. Legacy-pakketten zoals
docker,docker.ioofdocker-enginekunnen conflicteren met de huidige Docker Engine. Voer dit commando uit om oude versies op te ruimen:Je firewall- en netwerkconfiguratie kan invloed hebben op containernetwerken. Docker maakt eigen netwerkinterfaces en iptables-regels aan. Als je UFW of aangepaste firewallregels gebruikt, moet je die na installatie mogelijk aanpassen om containerverkeer toe te staan.
Controleer deze vereisten nu — dat bespaart je later tijd met troubleshooting.
Installatiemethoden
Je hebt vier manieren om Docker op Debian te installeren, elk met eigen afwegingen. Ik help je de methode te kiezen die past bij jouw omgeving en beveiligingseisen.
Zoek je in plaats daarvan Ubuntu-instructies? We hebben een complete stapsgewijze gids voor Docker installeren op Ubuntu.
Methode 1: Officiële Docker-repository (aanbevolen)
Met deze methode krijg je de nieuwste Docker-versie met regelmatige beveiligingsupdates.
De officiële Docker-repository bevat altijd de nieuwste stabiele releases, plus je krijgt automatische updates via je pakketbeheerder. Je zit niet vast aan verouderde versies die belangrijke beveiligingspatches of nieuwe features missen.
Begin met het updaten van je systeem en het installeren van de pakketten die Docker nodig heeft:
Voeg vervolgens Docker's officiële GPG-sleutel toe om de echtheid van pakketten te verifiëren:
Configureer de repository door deze toe te voegen aan je sources-lijst:
Installeer tot slot Docker Engine, CLI en Compose:
Dit geeft je alles wat je nodig hebt voor Docker-deployments in productie.
Methode 2: Standaard Debian-repository
Deze aanpak installeert Docker met één commando, maar je krijgt een oudere versie.
Debians standaardrepository maakt installeren eenvoudig — voer gewoon
sudo apt install docker.iouit. Maar er is een addertje: vaak krijg je Docker-versies die maanden of jaren achterlopen op de huidige release.Deze methode is prima voor basistests of wanneer je een specifieke oudere versie nodig hebt voor compatibiliteit. Maar je mist beveiligingsupdates, prestatieverbeteringen en nieuwe features die met recente Docker-releases meekomen.
Gebruik deze methode alleen als de officiële repository geen optie is.
Methode 3: Handmatige DEB-pakketinstallatie
Ik laat je zien hoe je pakketten direct downloadt en installeert wanneer je geen toegang hebt tot repositories.
Deze methode werkt voor air-gapped systemen, bedrijfsnetwerken met beperkte internettoegang, of wanneer je dezelfde Docker-versie op meerdere machines wilt installeren zonder herhaaldelijk te downloaden.
Download de DEB-pakketten van Docker's website:
Ga naar
https://download.docker.com/linux/debian/dists/Kies je Debian-versie (bullseye, bookworm, enz.)
Navigeer naar
pool/stable/amd64/Download deze pakketten:
docker-ce_*.deb,docker-ce-cli_*.debencontainerd.io_*.debInstalleer de pakketten in deze volgorde:
Krijg je afhankelijkheidsfouten, voer dan
sudo apt-get install -fuit om ze op te lossen.Deze methode vergt meer handwerk voor updates, maar geeft je volledige controle over welke versie wordt geïnstalleerd.
Methode 4: Convenience-scripts
De laatste methode die ik behandel biedt snelle installatie voor testomgevingen, maar je moet het script eerst auditen.
Docker levert installatiescripts die je systeem detecteren en Docker automatisch installeren. Handig om snel testomgevingen op te zetten of wanneer je Docker op meerdere systemen inricht.
Controleer het script altijd voordat je het uitvoert:
Let op alles wat verdacht of onverwacht is. Het script wijzigt je systeemconfiguratie, dus je wilt weten wat het doet.
Voer het script uit nadat je het hebt beoordeeld:
Gebruik convenience-scripts niet in productie. Ze zijn bedoeld voor snelle setup, niet voor veilige, reproduceerbare deployments. Houd je voor kritieke systemen aan de methode met de officiële repository.
Ik raad de officiële repositorymethode aan, tenzij je specifieke beperkingen hebt die een andere aanpak vereisen.
Je installatie verifiëren
Installeren is slechts de eerste stap — je moet bevestigen dat Docker echt werkt voordat je iets deployt. Deze snelle tests vertellen je of je Docker-setup klaar is voor echte workloads.
Controleer je Docker-versie om te bevestigen dat de installatie voltooid is:
Je zou uitvoer moeten zien zoals
Docker version xx.x.x, build x. Krijg je een "command not found"-fout, dan is Docker niet goed geïnstalleerd of staat het niet in je PATH.Haal gedetailleerde buildinformatie op om te zien welke componenten draaien:
Dit toont afzonderlijke client- en serverversies plus architectuurdetails. Het servergedeelte bevestigt dat de Docker-daemon draait en bereikbaar is.
Draai een testcontainer om te valideren dat alles end-to-end werkt:
Docker downloadt de hello-world-image en voert die uit. Je ziet een bericht dat uitlegt hoe Docker-containers werken als alles correct functioneert. Deze test bevestigt dat Docker images kan pullen, containers kan aanmaken en commando's kan uitvoeren.
Je kunt verifiëren dat Docker Compose is geïnstalleerd en werkt:
Je zou uitvoer moeten zien zoals
Docker Compose version vX.xx.x. Let op dat nieuwere Docker-installatiesdocker compose(met een spatie) gebruiken in plaats van het oudedocker-compose-commando.Als al deze commando's zonder fouten werken, is je Docker-installatie klaar voor productiegebruik.
Klaar om je eerste echte container te draaien? Leer stap voor stap Docker-images draaien.
Configuratie na installatie
Docker werkt out-of-the-box, maar je wilt een paar dingen configureren voor dagelijks gebruik. In deze sectie behandel ik servicemanagement en gebruikersrechten die Docker handiger en veiliger maken.
Servicemanagement
Je kunt bepalen wanneer Docker draait met deze systemd-commando's:
Om Docker automatisch te laten starten bij het booten van je systeem, voer je het volgende uit:
Dit zorgt ervoor dat Docker elke keer draait wanneer je je server opnieuw opstart — precies wat je wilt voor productiesystemen.
Als je wilt controleren of Docker draait en de huidige status wilt zien, voer dan dit commando uit:
Je ziet of de service actief is, hoe lang hij draait en recente logberichten. Als Docker niet werkt, laat dit commando meestal zien waarom.
Om serviceproblemen op te lossen, bekijk de logs:
Dit toont gedetailleerde logs van de Docker-daemon die helpen bij het diagnosticeren van opstartproblemen, permissiefouten of configuratie-issues.
Toegang voor niet-rootgebruikers
Als je je gebruiker aan de docker-groep wilt toevoegen om Docker-commando's zonder sudo uit te voeren:
Dit voegt je huidige gebruiker toe aan de
docker-groep, wat je toestemming geeft om met de Docker-daemon te communiceren.Daarna moet je uit- en weer inloggen om de groepswijziging te laten gelden:
Of herstart je terminalsessie. Je kunt ook
newgrp dockeruitvoeren om de groep in je huidige sessie te activeren zonder uit te loggen.Test tot slot niet-roottoegang door dit Docker-commando uit te voeren:
Als dit zonder sudo werkt, ben je klaar.
Maar hier zit het beveiligingscompromis: gebruikers in de docker-groep hebben root-equivalente toegang tot je systeem. Ze kunnen hostmappen mounten, bij gevoelige bestanden, en mogelijk containers ontsnappen om de host te compromitteren.
Voeg alleen vertrouwde gebruikers toe aan de docker-groep, en doe dit nooit op gedeelde systemen waar je niet alle gebruikers beheert.
Configureer deze instellingen één keer en Docker wordt dagelijks veel prettiger in gebruik.
Opslagdriverconfiguratie
De opslagdriver van Docker beheert hoe containerimages en -data op je systeem worden opgeslagen. De meeste gebruikers hoeven dit nooit te wijzigen, maar je opties begrijpen helpt prestaties te optimaliseren voor specifieke workloads.
Docker kiest automatisch de beste opslagdriver voor je systeem tijdens de installatie. Op Debian is dat meestal
overlay2, dat uitstekende prestaties en stabiliteit biedt voor de meeste use-cases.Controleer je huidige opslagdriver met dit commando:
De
overlay2-driver werkt goed omdat deze:Je hebt mogelijk een andere opslagdriver nodig als je gespecialiseerde workloads draait of specifieke bestandssysteemvereisten hebt.
Sommige enterprise-opslagsystemen werken bijvoorbeeld beter met de
devicemapper-driver, of je hebtvfsnodig om problemen met containerbestandssystemen te debuggen.Je kunt de opslagdriver wijzigen door de configuratie van de Docker-daemon te bewerken:
Voeg hier de instelling voor storage-driver toe of wijzig deze:
Vergeet tot slot niet Docker te herstarten om de wijziging toe te passen:
Wees je ervan bewust dat het wijzigen van opslagdrivers je bestaande containers en images ontoegankelijk maakt. Maak eerst een back-up van belangrijke data, of exporteer containers die je wilt bewaren.
Je kunt de nieuwe driver nu testen door een image te pullen en een container te draaien:
Kort gezegd: blijf bij
overlay2tenzij je specifieke vereisten hebt die een andere driver noodzakelijk maken.Beveiligingsversteviging
Standaard Docker-installaties zijn prima voor ontwikkeling, maar productieomgevingen hebben extra beveiligingslagen nodig. Deze configuraties beschermen je host tegen containeruitbraken en aanvallen die resources uitputten.
SELinux/AppArmor-integratie
Verplichte toegangscontroles voegen een beveiligingslaag toe die beperkt wat containers kunnen doen, zelfs als ze gecompromitteerd zijn. Zonder deze controles kan een container die als root draait mogelijk bij hostresources waar hij niet aan mag komen.
Je kunt AppArmor inschakelen voor Docker, Debians standaard beveiligingsframework, door deze commando's uit te voeren:
Zodra AppArmor draait, laad je Docker's beveiligingsprofiel:
Nu kun je containers draaien met AppArmor-bescherming ingeschakeld:
Het
docker-default-profiel beperkt container-capabilities zoals bestandssystemen mounten, toegang tot ruwe netwerkinterfaces en het laden van kernelmodules.Voor SELinux-systemen (als je dat gebruikt in plaats van AppArmor), schakel eerst containerbeheer in:
Draai daarna containers met SELinux-labels:
Deze controls blokkeren veelvoorkomende container-escapetechnieken en beperken de schade van gecompromitteerde containers.
Daemonconfiguratie
Je kunt (en moet) Docker-daemoninstellingen aanpassen om het aanvalsoppervlak te verkleinen en je beveiligingshouding te verbeteren. Maak of bewerk het bestand
/etc/docker/daemon.json:Dit doet elke instelling:
live-restore: truehoudt containers draaiend als de Docker-daemon crashtuserland-proxy: falsegebruikt iptables direct in plaats van de userland-proxy voor betere performanceno-new-privileges: truevoorkomt dat containers nieuwe privileges krijgenicc: falseschakelt inter-containercommunicatie standaard uitdisable-legacy-registry: trueblokkeert toegang tot oude, onveilige registryprotocollenHerstart Docker na deze wijzigingen om ze toe te passen:
Draai containers ook zoveel mogelijk als niet-rootgebruikers:
Dit beperkt wat gecompromitteerde containers met je systeem kunnen doen.
Resourcelimieten met control groups (cgroups)
Containers zonder resourcelimieten kunnen alle beschikbare CPU, geheugen en I/O opsouperen en uiteindelijk je hele host neerhalen. Control groups (cgroups) voorkomen dit door harde limieten op resourcegebruik af te dwingen.
Begin met geheugenlimieten om te voorkomen dat containers teveel RAM gebruiken:
Je kunt ook CPU-gebruik beperken zodat één container niet alle rekenkracht opslokt:
Voor systemen met hoge schijf-I/O, regel lees-/schrijfsnelheden:
Je kunt ook meerdere limieten combineren voor volledige resourcecontrole:
Voor consistente limieten over alle containers, configureer defaults in je daemon.json:
Deze limieten voorkomen aanvallen die resources uitputten en zorgen voor eerlijke verdeling tussen containers.
Configureer deze beveiligingsmaatregelen één keer en je Docker-omgeving wordt veel lastiger te compromitteren.
Dagelijks Docker-commando's onder de knie krijgen? Deze 18 essentiële Docker-commando's maken je productief.
Veelvoorkomende problemen oplossen
Zelfs met een correcte installatie kan Docker haperingen krijgen waardoor containers niet goed draaien. Dit zijn de meest voorkomende problemen en hoe je ze snel oplost.
Permissiefouten
De meeste Docker-permissieproblemen komen erop neer dat je gebruiker geen juiste toegang heeft tot het socketbestand van Docker. Als je
Got permission denied while trying to connect to the Docker daemon socketziet, betekent dit dat je nog niet in de docker-groep zit.Dit gebeurt omdat Docker als root draait, maar een socket maakt die leden van de docker-groep kunnen benaderen. Voeg jezelf toe aan de groep:
Je moet uit- en weer inloggen om de wijziging te laten gelden. Wil je nu niet uitloggen, activeer de groep in je huidige sessie:
Bestandspermissiefouten binnen containers zijn anders maar net zo gebruikelijk. Deze ontstaan wanneer het containerproces geen bestanden kan lezen of schrijven die je vanaf je host hebt gemount. De container draait mogelijk als een ander gebruikers-ID dan de eigenaar van je bestanden.
Controleer welke gebruiker eigenaar is van je bestanden:
De meeste Docker-containers draaien standaard als gebruikers-ID 1000. Als je bestanden eigendom zijn van root of een andere gebruiker, wijzig dan het eigenaarschap:
Als je SELinux draait (in plaats van AppArmor), kun je andere permissieweigeringen zien die in de auditlogs verschijnen. Deze zijn complexer omdat SELinux bepaalt waar processen toegang toe hebben op basis van security-contexts, niet alleen gebruikers-ID's.
Zoek recente toegangsproblemen op:
Los SELinux-contexten op door containerbeheer in te schakelen en correcte labels op je Docker-volumes te herstellen:
Servicefouten
Als Docker niet wil starten of blijft crashen, moet je begrijpen wat er faalt voordat je het kunt oplossen. De systemd-servicestatus geeft snel overzicht:
Dit toont of Docker draait en recente foutmeldingen. Voor gedetailleerde troubleshooting wil je de live logs volgen terwijl Docker probeert te starten:
Een veelvoorkomende opstartfout treedt op wanneer Docker niet netjes is afgesloten. Je ziet een fout als "failed to start daemon: pid file found, ensure docker is not running." Er is dan een achtergebleven procesbestand dat het opstartscript in de war brengt.
Verwijder het oude bestand en probeer opnieuw te starten:
Opslagproblemen zijn een andere veelvoorkomende oorzaak van daemonfouten. Docker slaat alle data op in
/var/lib/docker, en als deze map vol raakt of corrupt is, kan Docker niet goed starten.Controleer hoeveel ruimte beschikbaar is:
Als je weinig ruimte hebt, ruim oude containers en images op die je niet gebruikt:
Netwerkconflicten kunnen Docker ook verhinderen te starten. Dit gebeurt wanneer Docker's standaard bridge-netwerk (meestal 172.17.0.0/16) botst met je bestaande netwerk. Je ziet fouten over niet-beschikbare adresbereiken.
Los dit op door een aangepast bridge-IP te configureren dat niet conflicteert met je netwerk. Bewerk
/etc/docker/daemon.json:Herstart Docker na de wijziging om de nieuwe netwerkconfiguratie te gebruiken:
Verouderde kernelproblemen
Docker is afhankelijk van Linux-kernelfeatures voor containerisatie, netwerken en beveiliging. Als je kernel te oud is, loop je tegen problemen aan die je niet kunt oplossen zonder te upgraden.
Controleer welke kernelversie je draait met dit commando:
Docker heeft minimaal kernel 3.10 nodig voor basisfunctionaliteit, maar voor productie wil je echt 4.0 of nieuwer. Alles ouder dan 3.10 werkt simpelweg niet met moderne Docker-versies.
Je kernel updaten op Debian is eenvoudig: installeer gewoon het nieuwste kernelpakket:
De nieuwe kernel is pas actief nadat je je systeem herstart:
Soms is de kernel nieuw genoeg, maar zijn bepaalde kernelmodules niet geladen. Docker heeft specifieke modules nodig voor netwerk- en containerfeatures. Je ziet dan fouten over niet-beschikbare netwerkinterfaces of containers die niet goed starten.
Laad de essentiële modules handmatig:
Deze modules zouden automatisch moeten laden, maar als dat niet gebeurt, maak ze dan permanent door ze toe te voegen aan je systeemconfiguratie:
Zelfs met een recente kernel kun je runtime-fouten zien die "operation not supported" melden. Dit betekent meestal dat je kernel zonder bepaalde features is gecompileerd die Docker verwacht. Helaas is er geen workaround voor ontbrekende kernelfeatures — je hebt een correct geconfigureerde kernel nodig.
De meeste Docker-installatieproblemen zijn terug te voeren op deze drie gebieden: gebruikersrechten, serviceconfiguratie of kernelcompatibiliteit. Los het onderliggende probleem op in plaats van symptomen te omzeilen, en je Docker-omgeving wordt veel stabieler.
Werk je met databases in containers? PostgreSQL-configuratie in Docker is makkelijker dan je denkt.
Docker verwijderen
Soms moet je Docker volledig van je systeem verwijderen, of je nu overstapt op een andere containerruntime of schoon wilt beginnen na configuratieproblemen.
Dit proces omvat meer dan alleen pakketten verwijderen — je wilt ook data en systeemwijzigingen opruimen.
Begin met het verwijderen van alle Docker-pakketten van je systeem. Het exacte commando hangt af van hoe je Docker oorspronkelijk hebt geïnstalleerd.
Als je via de officiële Docker-repository hebt geïnstalleerd:
Als je via Debians standaardrepository hebt geïnstalleerd:
Dit verwijdert de pakketten, maar laat configuratiebestanden en afhankelijkheden achter die andere pakketten mogelijk nog nodig hebben. Om die ook te verwijderen:
Verwijder daarna de datamap van Docker als je alle images, containers en volumes wilt verwijderen. Deze stap is optioneel, maar aanbevolen voor een complete opschoning.
Docker slaat standaard alles op in
/var/lib/docker. Deze map verwijderen wist al je containers, images, netwerken en volumes permanent:Verwijder ook de configuratiemap van Docker:
Ga verder met het opschonen van systeemgroepen en -gebruikers die Docker tijdens de installatie heeft aangemaakt. Docker voegt een
docker-groep toe aan je systeem en kan gebruikersrechten hebben aangepast.Verwijder de docker-groep:
Als je gebruikers aan de docker-groep hebt toegevoegd, wordt hun groepslidmaatschap automatisch opgeruimd wanneer je de groep verwijdert. Je kunt ook specifieke gebruikers handmatig uit de groep verwijderen voordat je deze wist:
Verwijder daarna de systemd-servicebestanden en socketbestanden van Docker:
Controleer tot slot op overgebleven Docker-processen die mogelijk nog draaien:
Als je iets vindt, stop ze dan handmatig:
Na deze stappen zou Docker volledig van je systeem verwijderd moeten zijn, zonder achtergebleven bestanden of configuraties.
Alternatieven voor Docker overwegen? Bekijk andere containerplatforms voordat je overstapt.
Conclusie en best practices
Je hebt nu Docker draaiend op Debian, maar installatie is nog maar het begin. Hoe je je Docker-omgeving configureert en onderhoudt, bepaalt of je een soepele productie-ervaring hebt of nachtenlang containerproblemen aan het troubleshooten bent.
Multi-platform containers bouwen voor verschillende architecturen? Docker Buildx maakt cross-platform builds eenvoudig.
Kies je installatiemethode op basis van je beperkingen. De officiële Docker-repository werkt het best voor de meeste productieomgevingen omdat je de nieuwste features en beveiligingspatches krijgt. Maar air-gapped netwerken of eisen voor versieconsistentie kunnen handmatige DEB-installatie vereisen.
Beveilig je Docker-omgeving direct. Schakel AppArmor of SELinux in voor verplichte toegangscontrole, configureer restrictieve daemoninstellingen en gebruik cgroups om containerresources te beperken. Houd Docker up-to-date met automatische beveiligingsupdates, maar test ze eerst in staging.
Gebruik Docker Compose voor multi-container-applicaties. In plaats van complexe
docker run-commando's te beheren, definieer je je applicatiestack in YAML.Monitor schijfgebruik en ruim regelmatig op. Voer
docker system pruneuit om ongebruikte images te verwijderen en stel logrotatie in om te voorkomen dat containers je schijf vollopen.Wanneer je meer gedetailleerde informatie nodig hebt, behandelt de officiële documentatie geavanceerde onderwerpen die deze gids niet raakt. Bekijk de Docker-documentatie voor diepgaande info over networking, storage drivers en orchestratie. De Debian Docker-pakketdocumentatie legt pakketspecifieke configuraties en bekende issues uit.
Docker op Debian geeft je een stabiel, krachtig platform voor gecontaineriseerde applicaties — maar alleen als je het doordacht configureert en consequent onderhoudt.
Wil je meer leren over Docker, containerization en de toepassing in data science en machine learning? Deze DataCamp-cursussen zijn je beste volgende stap: