Hoe Podman, Dockerfile en Ubuntu te gebruiken: veilige en moderne containerbeheer op Linux

目次

1. Inleiding

De Evolutie en Groeiende Betekenis van Containertechnologie

In de afgelopen jaren heeft containertechnologie snel aan belang gewonnen in het veld van applicatieontwikkeling en -beheer. In het bijzonder zorgt de mogelijkheid om ontwikkel- en productieomgevingen op elkaar af te stemmen voor reproduceerbaarheid van bewerkingen, een cruciaal voordeel dat sterke steun heeft gekregen onder ingenieurs.

Hoewel Docker de meest bekende containerplatform blijft, trekt Podman steeds meer aandacht als een modern alternatief. Podman biedt een bijna identieke command-line interface (CLI) aan Docker, maar onderscheidt zich met zijn daemonloze en lichtgewicht architectuur en zijn ondersteuning voor rootless (non-root) werking.

Waarom “Podman + Dockerfile + Ubuntu”?

In dit artikel leggen we uit hoe je Podman, Dockerfile en Ubuntu combineert voor moderne containerworkflows op Linux.

  • Ubuntu is een populaire Linuxdistributie die wordt gebruikt door iedereen van beginners tot gevorderde gebruikers,
  • Dockerfile dient als blauwdruk voor het bouwen van containerimages,
  • en Podman is een next-generation tool die is ontworpen om deze images flexibel en veilig te beheren.

Met de groeiende veiligheidsbewustzijn wordt de aanpak van Podman gebruiken met Dockerfile op Ubuntu steeds meer geadopteerd door zowel individuele ontwikkelaars als enterprise-teams.

Doel en Doelgroep

Het doel van dit artikel is om een duidelijke, stapsgewijze handleiding te bieden voor het bouwen van praktische containers met Podman en Dockerfile op Ubuntu.

Dit artikel is bedoeld voor lezers zoals:

  • Ontwikkelaars met ervaring in Docker die nieuwsgierig zijn naar Podman
  • Ubuntu-gebruikers die op zoek zijn naar veilig containerbeheer
  • Ingenieurs die containertechnologieën in hun workflow willen integreren
  • Beginners die geïnteresseerd zijn in het schrijven van Dockerfiles en bouwen met Podman

We behandelen alles van de basis en probleemoplossingstips tot de belangrijkste verschillen met Docker en hoe je kunt migreren.

2. Wat is Podman?

Overzicht van Podman

Podman (Pod Manager) is een next-generation tool voor containerbeheer, ontwikkeld door een gemeenschap onder leiding van Red Hat. Net als Docker kan het OCI-conforme containers bouwen, uitvoeren en beheren, maar het ontwerp en de architectuur verschillen op significante manieren.

Het grootste kenmerk van Podman is dat het geen achtergronddaemon vereist. Dit maakt lichte en veilige werking mogelijk. Podman ondersteunt ook rootless modus, waardoor gewone gebruikers containers kunnen beheren zonder verhoogde rechten. De CLI is sterk compatibel met Docker, dus de meeste commando’s zijn bijna identiek.

Belangrijkste Kenmerken van Podman

Hier zijn enkele opmerkelijke kenmerken van Podman:

Daemonloze Architectuur

Podman werkt zonder een achtergronddaemon (resident proces) voor containerbeheer. Dit resulteert in efficiënt gebruik van resources, zonder onnodige achtergrondprocessen.

Rootless Ondersteuning (Niet-Privilegiële Gebruikers)

Podman stelt gewone gebruikers in staat om containers uit te voeren en te beheren zonder beheerdersrechten. Dit maakt het mogelijk om containers veilig te laten werken in multi-user- of serveromgevingen, wat de beveiligingsrisico’s aanzienlijk vermindert.

Docker-Compatibele CLI

Podman gebruikt bijna dezelfde commando-opbouw als Docker. Bijvoorbeeld, de volgende Docker-commando’s werken bijna identiek in Podman:

podman build -t myimage .
podman run -it myimage bash

Dit stelt gebruikers die vertrouwd zijn met Docker in staat om naadloos over te schakelen naar Podman.

Pod-functie

Podman adopteert het “Pod”-concept uit Kubernetes, waardoor je meerdere containers als een enkele logische eenheid kunt beheren. Dit verhoogt de compatibiliteit met Kubernetes en maakt een soepele migratie mogelijk van lokale naar cloudomgevingen.

Compatibiliteit met Ubuntu

Hoewel Podman veel wordt gebruikt op Fedora en RHEL-gebaseerde distributies, draait het ook stabiel op Ubuntu. Je kunt het installeren vanuit de officiële repositories, en de setup is eenvoudig. Vooral sinds Ubuntu 20.04 LTS is het pakketonderhoud verbeterd, wat de drempel voor adoptie verlaagt.

3. Podman installeren op Ubuntu

Voordat u begint: Pre‑installatie checklist

Controleer eerst uw Ubuntu‑versie voordat u Podman installeert. Podman wordt aanbevolen voor Ubuntu 20.04 LTS of nieuwer. Oudere versies kunnen de benodigde pakketten in de officiële repository missen.

Controleer uw Ubuntu‑versie met het volgende commando:

lsb_release -a

Voor de installatie van Podman zijn sudo‑rechten vereist. Zelfs als u de rootless‑modus wilt gebruiken, zijn beheerdersrechten nodig voor de eerste installatie, dus zorg dat u die heeft.

Podman installeren (Ubuntu officiële repository)

Op Ubuntu 20.04, 22.04 of later kunt u Podman eenvoudig installeren met APT:

sudo apt update
sudo apt install -y podman

Na de installatie controleert u de versie om te bevestigen dat alles correct is ingesteld:

podman --version

Hoe u de nieuwste versie krijgt (officiële PPA)

Het Podman‑pakket in de standaard Ubuntu‑repository is mogelijk niet de nieuwste. Als u de nieuwste functies wilt, gebruik dan de officiële Personal Package Archive (PPA):

. /etc/os-release
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add -
sudo apt update
sudo apt install -y podman

Hiermee krijgt u toegang tot de nieuwste Podman‑release, gelijkwaardig aan de Red Hat‑ en Fedora‑ecosystemen.

Basis Podman‑functionaliteitstest

Voer na de installatie een snelle controle uit:

podman info

Dit commando toont de Podman‑versie, configuratie en ondersteunde functies zoals de rootless‑modus.

Test het ophalen en uitvoeren van een officiële Alpine‑Linux‑container:

podman run --rm -it alpine sh

Als de shell succesvol wordt gestart, werkt uw Podman‑installatie correct.

4. Dockerfile gebruiken met Podman

Wat is een Dockerfile?

Een Dockerfile is een blauwdruk voor het bouwen van container‑images. Het is een tekstbestand dat de basis‑image, te installeren pakketten, te kopiëren bestanden en andere instructies in volgorde opsomt.

Container‑tools zoals Podman en Docker kunnen automatisch een consistente omgeving creëren op basis van dit bestand.

Voorbeeldinstructies:

FROM ubuntu:22.04
RUN apt update && apt install -y curl
COPY ./app.sh /usr/local/bin/app.sh
CMD ["bash", "/usr/local/bin/app.sh"]

Dit installeert pakketten, kopieert scripts en definieert wat standaard moet worden uitgevoerd in de resulterende image.

Dockerfile gebruiken met Podman

U kunt container‑images uit Dockerfiles bouwen met Podman, vrijwel precies zoals u dat met Docker zou doen.

1. De map voorbereiden

Zet uw bestanden als volgt op:

project/
├── Dockerfile
└── app.sh

app.sh kan een eenvoudig script zijn:

#!/bin/bash
echo "Hello from Podman container!"

Maak het script uitvoerbaar:

chmod +x app.sh

2. Bouwen met Podman

Met de Dockerfile in uw huidige map voert u uit:

podman build -t mypodmanapp .

Dit maakt een container‑image genaamd mypodmanapp.

3. Het bouwresultaat controleren

Bekijk de gemaakte image met:

podman images

4. De container uitvoeren

Start een container vanuit uw gebouwde image:

podman run --rm mypodmanapp

Als alles correct is ingesteld, ziet u: Hello from Podman container!

Verschil met Containerfile

Podman ondersteunt bestanden met de naam Containerfile, die dezelfde syntaxis gebruiken als een Dockerfile. Dit is simpelweg een neutrale naam, niet gebonden aan het Docker‑merk.

De functionaliteit is identiek. Of u uw bestand nu Dockerfile of Containerfile noemt, Podman zal het gebruiken:

podman build -f Containerfile -t myimage .

Geef gewoon de bestandsnaam op met de optie -f indien nodig.

5. Praktisch voorbeeld: Een Ubuntu‑gebaseerde container bouwen

Een Dockerfile maken op basis van Ubuntu

Laten we stap voor stap doornemen hoe we een Ubuntu-gebaseerde Dockerfile bouwen en een containerimage bouwen en draaien met Podman.

Hier is een eenvoudig Dockerfile-voorbeeld:

FROM ubuntu:22.04

RUN apt update && 
    apt install -y curl && 
    apt clean

COPY hello.sh /usr/local/bin/hello.sh
RUN chmod +x /usr/local/bin/hello.sh

CMD ["/usr/local/bin/hello.sh"]

Deze Dockerfile:

  • Gebruikt de officiële Ubuntu 22.04-image
  • Installeert het curl-pakket
  • Kopieert hello.sh van de host naar de container
  • Stelt hello.sh in als het standaardscript

Nu, maak een eenvoudig hello.sh-script:

#!/bin/bash
echo "Hello from a Podman container!"

Geef het uitvoerrechten:

chmod +x hello.sh

De Image Bouwen met Podman

Zodra je bestanden klaar zijn, bouw de image met:

podman build -t ubuntu-hello .

De vlag -t ubuntu-hello tagt je image; de . specificeert de build-directory.

Als het succesvol is, zie je je nieuwe image vermeld met:

podman images

De Image Draaien en Testen

Draai een container van je nieuwe image:

podman run --rm ubuntu-hello

Voorbeeldoutput:

Hello from a Podman container!

De --rm-optie verwijdert de container automatisch na het afsluiten, perfect voor testen.

Tip: Interactieve Containertoegang

Als je interactief wilt werken binnen de container, gebruik de -it-optie om Bash te starten:

podman run -it ubuntu-hello bash

Dit geeft je een lichtgewicht Ubuntu-ontwikkelomgeving binnen je container.

6. Podman Functies en Tips

Podman Sterktes: Flexibiliteit & Beveiliging

Podman biedt grotere flexibiliteit en verbeterde beveiliging terwijl het compatibel blijft met Docker. Hier zijn enkele nuttige functies en dagelijkse operationele tips.

Beveiligde Operaties met Rootless Mode

Een van de sleutelsterktes van Podman is rootless mode, die non-root gebruikers toestaat om containers te draaien, stoppen en beheren.

Bijvoorbeeld, je kunt Podman gebruiken zonder sudo:

podman run -it ubuntu bash

Operaties zijn beperkt tot de home-directory van de gebruiker, minimaliseert risico voor het systeem. Dit is vooral waardevol op gedeelde servers of in dev-omgevingen.

Integreren met systemd voor Auto-Start

Podman kan natief integreren met systemd, waardoor containers automatisch kunnen starten als Linux-services.

Genereer een systemd unit-file met:

podman generate systemd --name mycontainer --files --restart-policy=always

Dit creëert een unit-file in ~/.config/systemd/user/. Activeer en start met:

systemctl --user daemon-reexec
systemctl --user enable --now container-mycontainer.service

Containers zullen nu automatisch herstarten zelfs na een server-reboot.

Meerdere Containers Beheren met podman-compose

Naast single-container operaties ondersteunt Podman multi-container beheer. Met podman-compose kun je complexe projecten beheren vergelijkbaar met Docker Compose.

Installeer met pip:

pip install podman-compose

Omdat het compatibel is met docker-compose.yml-bestanden, is het migreren van projecten eenvoudig.

Om services te starten, voer gewoon uit:

podman-compose up -d

Podman stelt je in staat om ontwikkelomgevingen direct te reproduceren.

Andere Nuttige Commando’s en Tips

Opruimen van Ongebruikte Images & Containers

podman system prune -a

Verwijder ongebruikte bestanden en images om opslagruimte vrij te maken.

Shell Completion (bash/zsh)

Installeer Podman’s completion-scripts voor eenvoudiger CLI-gebruik:

sudo apt install podman-docker

Dit activeert command completion, vergelijkbaar met Docker, voor het podman-commando.

7. Migreren van Docker naar Podman

Waarom Migratie naar Podman Trendy Is

Hoewel Docker lang de de facto standaard is geweest voor containers, wint Podman aan populariteit vanwege zijn lichtere gewicht en sterkere beveiliging. Red Hat Enterprise Linux (RHEL) en Fedora zijn overgestapt van Docker naar Podman als standaard, wat veel teams ertoe aanzet om migratie te overwegen.

Deze sectie behandelt praktische stappen en aandachtspunten voor het migreren van Docker naar Podman.

Commandocompatibiliteit: Docker vs. Podman

Podman is zeer compatibel met Docker‑commando’s, dus je kunt ze meestal direct vervangen:

DockerPodman
docker build -t myapp .podman build -t myapp .
docker run -it myapppodman run -it myapp
docker imagespodman images
docker pspodman ps

Deze naadloze CLI‑compatibiliteit is een groot voordeel van Podman.

Volledige compatibiliteit bereiken met podman-docker

Als je scripts of CI/CD‑pipelines docker‑commando’s gebruiken, zorgt het installeren van het podman-docker‑pakket ervoor dat Podman als een drop‑in vervanging kan dienen:

sudo apt install podman-docker

Dit stelt het docker‑commando in als een symbolische link naar Podman:

which docker
# → /usr/bin/docker → podman symlink

Je kunt dan Docker‑scripts uitvoeren zonder aanpassing.

Alternatief voor Docker Compose: podman-compose

Als je Docker Compose gebruikt voor multi‑containerprojecten, biedt podman-compose vergelijkbare functionaliteit.

Het is zeer compatibel, maar sommige Compose‑opties kunnen verschillen (bijv. depends_on), en event‑logging of health‑checks kunnen zich anders gedragen. Voor eenvoudige web‑+‑DB‑stacks verloopt de migratie over het algemeen soepel.

Images & volumes migreren

Lokale Docker‑images zijn standaard niet zichtbaar voor Podman. Je kunt:

Optie 1: Opnieuw ophalen met Podman

podman pull ubuntu:22.04

Optie 2: Exporteren vanuit Docker → Importeren naar Podman

# Export with Docker
docker save myimage > myimage.tar

# Import with Podman
podman load < myimage.tar

Dit maakt Docker‑gebouwde images beschikbaar in Podman.

Overige overwegingen

  • Rootless werking: Docker draait meestal als root, terwijl Podman standaard is ontworpen voor rootless werking
  • Daemon‑structuur: Podman is daemonless, waardoor het procesbeheer anders is
  • Log‑ en gegevensopslaglocaties kunnen verschillen — controleer de configuraties tijdens de migratie

8. Veelgestelde vragen (FAQ)

V1. Wat zijn de belangrijkste verschillen tussen Podman en Docker?

A1. Het grootste verschil is dat Podman “daemonless” is (geen achtergrondproces vereist), waardoor het lichter en veiliger is. Podman ondersteunt ook rootless‑modus, zodat gebruikers containers kunnen beheren zonder verhoogde rechten. De CLI‑compatibiliteit is hoog, dus de meeste commando’s zijn hetzelfde.

V2. Is er een verschil tussen Dockerfile en Containerfile?

A2. Er is geen functioneel verschil. Beide zijn bestanden die beschrijven hoe containers gebouwd worden, met identieke syntax. Sommige projecten geven de voorkeur aan “Containerfile” als neutrale naam, maar je kunt beide namen gebruiken met Podman.

V3. Kan ik Docker Compose‑bestanden gebruiken met Podman?

A3. Podman ondersteunt Docker Compose niet native, maar je kunt podman-compose (een Python‑tool) gebruiken om docker-compose.yml‑bestanden te interpreteren en uit te voeren in een Podman‑omgeving.

Sommige Compose‑opties (depends_on, enz.) kunnen beperkingen hebben, dus test complexe configuraties van tevoren.

V4. Is Podman stabiel op Ubuntu?

A4. Ja, Podman draait betrouwbaar op Ubuntu 20.04 LTS en nieuwer. Het is beschikbaar in de officiële Ubuntu‑repositories en kan geïnstalleerd worden met apt. Voor de nieuwste versie kun je de officiële PPA gebruiken.

V5. Zijn er toegangsbeperkingen in rootless‑modus?

A5. In rootless‑modus zijn bepaalde bevoorrechte bewerkingen en het binden aan poorten onder 1024 beperkt. Port‑forwarding kan dit omzeilen. Voor de meeste toepassingen is rootless‑modus praktisch en wordt aanbevolen.

V6. Kan Podman images van Docker Hub ophalen?

A6. Ja, Podman kan standaard images van Docker Hub ophalen. Soms moet je het volledige registerpad opgeven, bijv. docker.io/library/ubuntu:

podman pull docker.io/library/ubuntu

Podman ondersteunt ook registers zoals Quay.io en GitHub Container Registry.

V7. Is Podman geschikt voor productiegebruik?

A7. Ja, Podman bevat Kubernetes‑compatibele podconcepten en systemd‑integratie voor automatisch starten, waardoor het geschikt is voor productieomgevingen—vooral waar sterke beveiliging nodig is. Podman is nu standaard op Red Hat Enterprise Linux en Fedora, met brede adoptie.