Kurztipp: Rootless Podman + docker-compose unter Fedora

Seit 2018 gibt es mit Podman eine sehr elegante und schlanke Container-Runtime als Alternative zu Docker. Podman bietet eine geringere Angriffsfläche durch wegfallende Hintergrunddienste und ist auch auf Red Hat-artigen Betriebssystemen oftmals vorinstalliert. Mit einigen Kniffen lassen sich bestehende docker-compose-Konfigurationen auch weiterhin verwenden.

Zunächst müssen Podman inklusive Docker-Kompatibilität und docker-compose - falls noch nicht geschehen - installiert werden:

1# dnf install podman podman-docker docker-compose

Für priviligierte Container muss das systemweite Socket aktiviert und unter einem weiteren Namen zur Verfügung gestellt werden. Podman kommt ohne Socket aus, Docker nicht - daher erwartet docker-compose ein Socket zur Kommunikation.

1# ln -s /var/run/podman/podman.sock /var/run/docker.sock
2# systemctl enable --now --user podman.socket

Für unprivilegierte Container muss das Socket im Benutzerkontext aktiviert werden:

1$ systemctl enable --now --user podman.socket

Besonders wichtig ist die Umgebungsvariable DOCKER_HOST, die auf das Socket im Benutzerkontext zeigen muss. Es empfiehlt sich das Vorhandensein des selbigen zu überprüfen:

1$ export DOCKER_HOST="unix:$XDG_RUNTIME_DIR/podman/podman.sock"
2$ file $XDG_RUNTIME_DIR/podman/podman.sock
3/run/user/1000/podman/podman.sock: socket
Note

Der export-Befehl ist ein guter Kandidat für die ~/.bashrc-Datei.

Damit in einer docker-compose.yml angegebene Volumes dem Container zur Verfügung stehen, muss zwingend der SELinux-Support aktiviert werden (:z am Ende der Pfad-Angabe ergänzen):

1version: "3"
2services:
3...
4
5volumes:
6- "./data:/data:z"

Andernfalls starten die Container, sind aber nicht in der Lage auf die Daten zuzugreifen.

Übersetzungen: