Herausfinden, was deine Container vom Host verlangen
Über die Machbarkeit entscheiden nicht die Images, sondern das, was drumherum konfiguriert ist. Diese Inventur machst du, bevor du irgendetwas installierst.
# Was läuft, mit welchen Ports
docker ps --format '{{.Names}}\t{{.Image}}\t{{.Ports}}'
# Wer läuft privilegiert oder mit Zusatz-Capabilities?
docker inspect $(docker ps -q) \
--format '{{.Name}} priv={{.HostConfig.Privileged}} caps={{.HostConfig.CapAdd}}'
# Wer bekommt den Docker-Socket eingehängt? Das ist der harte Fall.
docker inspect $(docker ps -q) \
--format '{{.Name}} {{range .Mounts}}{{.Source}} {{end}}' | grep docker.sock
# Welche Netzwerke und Volumes hängen dran?
docker network ls && docker volume lsDrei Ergebnisse dieser Inventur entscheiden fast alles: Container, die /var/run/docker.sock eingebunden bekommen (Traefik, Portainer, CI-Runner), Container mit --privileged und Container auf Ports unter 1024. Der Rest läuft unter Podman in aller Regel ohne Anpassung.
Was sich nicht eins zu eins übertragen lässt
- Swarm-Stacks. Podman kennt kein Swarm, dafür gibt es keinen Ersatz außer Kubernetes oder systemd.
- Dockerfiles mit BuildKit-Erweiterungen wie
RUN --mountoder--secret. Podman baut mit Buildah, nicht mit BuildKit, das testest du gesondert statt es anzunehmen. restart: alwaysaus einer Compose-Datei. Ohne Daemon übernimmt diese Aufgabe systemd, und das musst du aktiv einrichten.- Alles, was den Docker-Socket lesend oder schreibend braucht. Podman bietet eine kompatible API an, aber sie muss erst als Dienst laufen und rootless sieht sie nur die Container des eigenen Kontos.