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
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.