Cursus
Containers draaien de applicaties en datalasten van de wereld. Containers, voor het eerst bedacht in de jaren 70, bieden een manier om alles wat nodig is om een applicatie of workload te draaien te verpakken in één object. Containers helpen het “het werkt op mijn machine”-probleem op te lossen door een geïsoleerde en draagbare oplossing te bieden voor ontwikkelen, testen en uitrollen van code. Tools als Kubernetes leunen zwaar op containers als kernonderdeel van hun architectuur. Voorlopig gaan containers nergens heen.
Om deze containers te draaien heb je een oplossing voor containermanagement nodig. Daar komen Docker en Podman om de hoek kijken.
Docker en Podman worden gebruikt om containers te bouwen, beheren en uit te rollen. We pakken samen de overeenkomsten en verschillen tussen Docker en Podman uit, plus de unieke functionaliteit van elke tool. We verkennen zaken als daemon‑gebaseerde en daemonloze architectuur, beheer van meerdere containers en cross‑platform integratie. Aan het eind heb je de info die je nodig hebt om de perfecte containeroplossing voor jouw behoeften te kiezen.
Als je nieuw bent met deze tools, bekijk dan ook onze Introduction to Docker-cursus en de Introduction to Podman for Machine Learning-tutorial.
Wat zijn Podman en Docker?
Laten we beginnen met een overzicht van deze tools om onze vergelijking te starten:
Overzicht van Docker
Docker is de facto standaard voor het bouwen, draaien en uitrollen van containers. Containers zijn objecten die OS‑niveau afhankelijkheden en een vorm van applicatiecode combineren om dingen als full‑stack applicaties of ETL‑pijplijnen te verpakken en te draaien in hun eigen, geïsoleerde omgeving. Containers zijn als kleine computers met alleen het essentiële om code te draaien.
Docker is vrij jong en werd in 2013 voor het eerst uitgebracht als open‑sourceproject. Sindsdien is het project enorm gegroeid.
Als het gaat om het draaien van containers in een enterprise‑omgeving, grijpen bijna alle software‑ en datateams naar Docker.
Ontwikkelaars kunnen Docker draaien op de drie grote besturingssystemen, en het integreert goed met vrijwel alle moderne technologieën. Dit betekent dat een Data Engineer een datapijplijn kan schrijven en verpakken met een Docker‑container op hun lokale Mac, en die container kan uitrollen om te draaien op AWS ECS.
Tools als de Docker CLI, Docker Desktop en Docker Hub maken het voor ontwikkelaars van elk niveau makkelijk om te beginnen.
Zoek je een meer praktische manier om Docker te leren? We hebben verschillende Docker‑projecten en info over Docker‑certificeringen om je Docker‑skills naar een hoger niveau te tillen!
Overzicht van Podman
Net als Docker is Podman een open‑sourcetool voor het ontwikkelen en beheren van containers. Podman is oorspronkelijk ontwikkeld door Red Hat als een Linux‑native alternatief voor Docker en werd uitgebracht in 2019.
Het meest opvallend is dat de onderliggende architectuur van beide container‑runtimes verschilt; waar Docker daemons gebruikt, werkt Podman daemonloos (hier later meer over).
In tegenstelling tot Docker vereist Podman geen root‑toegang tot de machine waarop de pods die het beheert draaien; dit maakt Podman een veiligere optie voor teams die containers gebruiken om hun applicaties en workloads te draaien.
Podman‑gebruikers krijgen een vergelijkbare gebruikerservaring als bij Docker; ontwikkelaars kunnen een CLI of GUI (Podman Desktop) gebruiken om lokaal met Podman te werken.
Linux‑, Mac‑ en Windows‑gebruikers kunnen Podman gebruiken om lokaal hun containers te bouwen en testen voordat ze naar een of andere remote omgeving deployen, zoals Kubernetes.
Belangrijkste verschillen tussen Podman en Docker
Daemon vs. daemonloze architectuur
Het grootste verschil tussen Docker en Podman is de onderliggende architectuur waarop ze zijn gebouwd. Docker leunt zwaar op een daemon, terwijl Podman daemonloos is.
Je kunt een daemon zien als een proces dat op de achtergrond draait op het host‑besturingssysteem. In het geval van Docker is de daemon verantwoordelijk voor het beheren van Docker‑objecten (images en containers) en de communicatie met andere systemen. Om zijn daemon te draaien, gebruikt Docker een pakket genaamd dockerd.
Waarom is dit belangrijk? Om te beginnen vereisen daemons meestal root‑toegang tot de machine waarop ze draaien. Dit kan leiden tot beveiligingsrisico’s: als een aanvaller toegang krijgt tot een daemon, heeft die in feite toegang tot de hele machine.
De daemonloze architectuur van Podman brengt een paar voordelen met zich mee. Omdat het draaien van daemons bijna altijd root‑rechten vereist, kun je een daemonloze architectuur zien als “rootless”. Dit betekent dat gebruikers die geen systeemtoegang hebben tot de machine waarop hun containers draaien, nog steeds Podman kunnen gebruiken; dat is niet altijd het geval bij Docker.
In plaats van een daemon gebruikt Podman een Linux‑pakket dat bekendstaat als systemd. Omdat systemd native is voor Linux, wordt Podman vaak als “lichtgewicht” gezien vergeleken met Docker; Podman‑gebruikers zien meestal snellere opstarttijden van containers dan met Docker.
Images en containers bouwen
Ondanks hun fundamenteel verschillende architecturen delen zowel Docker als Podman hetzelfde kerndoel: images en containers maken en draaien. Hun aanpak verschilt echter licht.
Met Docker bouw je een image door eerst commando’s toe te voegen aan een Dockerfile. Vervolgens voer je een commando als docker build uit. Dit roept elk statement in de Dockerfile aan en bouwt uiteindelijk een image. Een image kan vervolgens als container “gerund” worden. Zoals je misschien al vermoedt, doe je dit met het commando docker run en geef je een image‑ID of tag op. Om meerdere containers te bouwen en te draaien, gebruiken we een speciale tool genaamd docker-compose, die we later nog bekijken.
Het proces van images bouwen en ze als containers draaien is vrijwel identiek in Podman. In plaats van een Dockerfile (al zou die bestandsnaam nog steeds werken) maken Podman‑gebruikers een Containerfile. De syntax om de image samen te stellen is hetzelfde. Zodra de juiste commando’s aan de Containerfile zijn toegevoegd, kan de image gebouwd en gerund worden met de Podman CLI.
Grotendeels is Podman compatibel met de meeste zaken van Docker. Je vindt hier en daar verschillen, maar in de meeste gevallen kun je de Docker CLI zonder problemen vervangen door de Podman CLI.

Podman vs Docker Desktop
Docker Desktop voor eenvoudige multi‑platformtoegang
Er zijn meerdere manieren om met Docker te werken. Ervaren software‑ en dataprofessionals leunen meestal op de Docker CLI (ook wel de Docker‑client) om te werken met hun Docker‑images en ‑containers.
Er is echter een nog eenvoudigere manier om te beginnen, en dat is met Docker Desktop.
Docker Desktop is een gratis, GUI‑gebaseerde tool die een interface biedt voor gebruikers om de images en containers te bouwen en beheren die hun applicaties of workloads draaien. Een data engineer kan Docker Desktop gebruiken om de images op hun machine te bekijken en die image om te zetten in een container. Evenzo kan een softwareontwikkelaar een image van Docker Hub binnenhalen om te gebruiken bij de start van hun volgende project.
De UI is eenvoudig en intuïtief, terwijl je volledige zicht en controle houdt over je Docker‑omgeving.
Maar Docker Desktop biedt meer dan alleen het bekijken en beheren van Docker‑objecten.
Gebruikers kunnen zaken doen als tot op de byte nauwkeurig de resources beheren die beschikbaar zijn voor hun Docker‑objecten, zich attachen aan een draaiende container of een Kubernetes‑cluster starten op hun lokale machine. Docker Desktop‑gebruikers kunnen kiezen uit honderden extensies, of hun Docker‑reis starten met handige tutorials en voorbeeldomgevingen. Gelukkig is Docker Desktop breed toegankelijk en draait het op Mac, Windows en Linux.
Podman Desktop‑functies en beperkingen
Podman Desktop lijkt sterk op zijn Docker‑tegenhanger. Vanuit de Podman Desktop‑UI kunnen gebruikers containers, images, pods en volumes bekijken en beheren. Net als bij Docker ondersteunt Podman plugins en integraties om dingen te doen als een Red Hat OpenShift‑cluster lokaal draaien of werken met LLM’s via het Podman AI Lab.
Heb je een custom plugin die je wilt gebruiken? Mooi—je kunt hem installeren vanuit Podman Desktop.
Als je zowel Docker‑ als Podman‑gebruiker bent, kan het je opvallen dat je in de Podman Desktop‑UI zowel Docker‑ als Podman‑objecten ziet. Dat is geen toeval! We kijken zo wat dit impliceert. Voor nu betekent het dat gebruikers met zowel hun Podman‑ ALS Docker‑objecten kunnen werken, allemaal via één overzicht.
De meest voorkomende use‑case voor containers is ze draaien via Kubernetes. Ondanks Docker’s status als industriestandaard voor containerisatie, biedt Podman een robuustere Kubernetes‑ervaring op Podman Desktop.
De mogelijkheid om Kubernetes‑resources zoals nodes, pods, deployments (en nog veel meer) te bekijken en beheren maakt Kubernetes‑beheer en ‑ontwikkeling een first‑class citizen op Podman Desktop. Deze tools, plus plugins zoals de eerder genoemde Red Hat OpenShift‑integratie, onderscheiden Podman als een tool die is gericht op Kubernetes‑omgevingen.
Podman Compose vs Docker Compose
Multi‑containerapps definiëren en beheren met Docker
Sommige applicaties en workloads kunnen in één container verpakt worden. Andere niet. Om beheer van meerdere containers eenvoudig te maken, biedt Docker een tool genaamd Docker Compose. Docker Compose gebruikt één YAML‑bestand om de componenten van je applicatie te definiëren.
Vervolgens kunnen met de docker-compose CLI deze containers en services worden gestart, gestopt of herbouwd. Een Docker Compose‑YAML‑bestand kan er ongeveer zo uitzien:
yaml
version: '3'
services:
app:
image: python:3.10
container_name: app
command: run app --host=0.0.0.0
database:
image: postgres:13
container_name: database
ports: 5432
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data
Er gebeurt hier veel, maar wat Docker Compose ons laat doen is een YAML‑bestand definiëren met twee services en een volume. Daarna zal het commando docker-compose up deze containers opstarten en hebben we een draaiende app.
Voor software‑ en datateams die grote applicaties en workloads draaien, maakt Docker Compose het gemakkelijk om zowel lokaal te ontwikkelen als code te shippen en te draaien in een productieomgeving.
Podmans aanpak voor applicaties met meerdere containers
Het draaien van multi‑containerapplicaties met Podman ziet er precies zo uit en voelt hetzelfde aan als werken met Docker. Podman doet dit met Podman Compose. Net als bij Docker Compose gebruikt Podman Compose YAML‑bestanden om de componenten van een applicatie op een declaratieve manier te definiëren.
De podman-compose CLI kan vervolgens worden gebruikt om de in het YAML‑bestand gedefinieerde services op te starten, te stoppen of te herstarten.
Grosso modo kan podman-compose worden gebruikt in plaats van docker-compose (er zijn hier en daar enkele incompatibiliteiten). Net als bij Docker maakt het gebruik van Podman Compose het mogelijk om multi‑containerapplicaties onafhankelijk en flexibel te beheren.
Hieronder zie je een tabel die Docker en Podman vergelijkt.
|
Functie/Aspect |
Docker |
Podman |
|
Architectuur |
Docker gebruikt een daemon als kernonderdeel van de architectuur. |
Daemonloze architectuur. |
|
Beveiliging |
Vereist root‑rechten om containers te bouwen, draaien en beheren. |
Het daemonloze karakter van Podmans architectuur maakt het een beveiligingsbewust containermanagementtool. |
|
Gebruikerstooling |
Docker Desktop, docker CLI |
Podman Desktop, podman CLI |
|
Compatibiliteit |
Windows, Mac, Linux |
Native voor Linux, beschikbaar voor Windows en Mac. |
|
Adoptie |
Industriestandaard voor containerorkestratie met een enorme community en bijna universele compatibiliteit. |
Alternatief voor Docker met een kleinere, maar groeiende community. |
Use‑cases en beste scenario’s voor Podman vs Docker
Laten we nu de kernvraag verkennen die je misschien hebt: wanneer gebruik je Docker en wanneer gebruik je Podman? Laten we dit van dichterbij bekijken.
Wanneer gebruik je Docker
Docker is de facto standaard voor het bouwen, draaien en uitrollen van containers. Als je net begint met containerisatie (vooral op je persoonlijke machine), probeer dan Docker.
Het is eenvoudig om je eerste (of vijftigste) container aan de praat te krijgen met tools als Docker Desktop of de Docker CLI. Docker heeft een enorme community, en de kans is groot dat wat jij probeert te doen al eens gedaan is. Dat maakt zaken als troubleshooting makkelijker.
Docker biedt meer cross‑platform consistentie dan Podman. Het belangrijkst: Docker integreert met bijna elke containerservice, waaronder AWS ECS, Azure AKS en Google Cloud Run.
Dit betekent dat wanneer het tijd is om je containers in productie te draaien, je eenvoudig kunt integreren met de dienst van jouw keuze. De mogelijkheid om van lokale ontwikkeling naar productie te gaan is een van de krachtigste aspecten van het containerizen van je code met Docker.
Het zijn niet alleen Software‑ en Data Engineering‑teams die Docker gebruiken. AI‑ en ML‑engineers, datascientists en zelfs data‑analisten gebruiken Docker om hun werk te ondersteunen!
Wanneer gebruik je Podman
Voor ontwikkelaars die werken in een beveiligingsgevoelige of sterk gereguleerde omgeving kan Podman jouw containermanager bij uitstek zijn. Onthoud: Podman is rootless, wat betekent dat een gebruiker die Podman lokaal draait geen root‑toegang tot zijn machine nodig heeft om lokaal containers te bouwen en te beheren. Hieronder staan nog een paar redenen waarom het logisch kan zijn om naar Podman te neigen in plaats van Docker.
- Je ontwikkelt lokaal op een Linux‑machine.
- Onderliggend resourcegebruik en opstarttijd van containers zijn belangrijk voor je.
- Je bent van plan je containers naar een Kubernetes‑cluster te brengen of wilt een Kubernetes‑omgeving nabootsen op je lokale machine.
Nog iets om in gedachten te houden: doorgaans zijn Podman en Docker inwisselbaar. Dat betekent dat als je met Docker begint en je je realiseert dat Podman de tool voor jou is, het eenvoudig is om tussen beide te wisselen.
Conclusie
Containers draaien vereist een tool om deze objecten te beheren. We hebben samen twee van de populairste containerisatietools verkend: Docker en Podman.
Docker, de industriestandaard voor containerisatie, wordt door miljoenen gebruikt om de applicaties en datalasten van de wereld te draaien. Docker’s architectuur is gebouwd bovenop de Docker‑daemon, die root‑toegang vereist tot het systeem waarop de container draait.
Om met Docker te werken kunnen ontwikkelaars de Docker CLI of Docker Desktop gebruiken, die beide de mogelijkheid bieden om zaken als images, containers en volumes te beheren. Docker’s brede adoptie betekent een grote en levendige community, evenals ondersteuning op alle drie de grote besturingssystemen en bijna elke containerdienst.
Podman biedt een alternatieve oplossing voor containermanagement. Podman is daemonloos en rootless, wat betekent dat een gebruiker geen root‑toegang nodig heeft tot de machine waarop hij Podman draait. Dit is aantrekkelijk voor teams die een beveiligingsbewuster containermanagementtool eisen. Net als Docker biedt Podman zowel een CLI als een UI om containers te bouwen en te beheren. Hoewel het native is voor Linux, kan Podman op zowel Windows als Mac draaien en het integreert behoorlijk goed met tools als AWS ECS en Azure AKS.
Ongeacht de tool die je kiest, het leren “containerizen” van de code die je schrijft is een van de snelste manieren om je ontwikkelvaardigheden te laten groeien. Wil je meer leren over Docker en Podman? Steek dan vooral je handen uit de mouwen met cursussen zoals Introduction to Docker of Containerization and Virtualization Concepts. Succes en veel codeerplezier!
Podman vs Docker – veelgestelde vragen
Wat is een container?
Een container is een object dat alles bevat wat nodig is om een applicatie of datalast te draaien. Je kunt containers zien als kleine computers met alleen het essentiële om een stukje code te draaien. Gelukkig kunnen we deze containers zowel op onze lokale machines als op servers draaien, waardoor een oplossing wereldwijd toegankelijk wordt.
Waarom zou ik een container in mijn project gebruiken?
Een container in je projecten gebruiken stelt je in staat om je code te verpakken in één object. Waarom is dat belangrijk? Het betekent dat je je code eenvoudig kunt delen met andere ontwikkelaars of zelfs naar productie kunt brengen zonder je volledige lokale omgeving te hoeven reproduceren.
Waarom heb ik een containermanager zoals Docker of Podman nodig?
Om een container te bouwen, draaien en beheren heb je een containermanager nodig. Docker en Podman bieden tools om je container te maken en te testen voordat je je oplossing de wereld in brengt. Zonder een tool als Docker of Podman zouden deze taken behoorlijk lastig zijn.
Wat betekent daemonloos?
Een daemon is een proces dat altijd op de achtergrond draait. Daemonloos betekent dat de tool bestaat zonder dat er voortdurend een achtergrondproces draait.
Zijn er naast Docker of Podman nog andere containermanagers?
Containerd en LXC zijn beide populaire systemen voor containermanagement om containers op schaal te helpen bouwen, draaien en beheren.
Jake is een data-engineer die gespecialiseerd is in het bouwen van robuuste en schaalbare datainfrastructuur met Airflow, Databricks en AWS. Jake is ook docent van DataCamp's Introduction to Data Pipelines en Introduction to NoSQL-cursus.

