Podman

aus www.kruedewagen.de, Homepage von Ralf und Judith Krüdewagen (Kruedewagen)
Zur Navigation springen Zur Suche springen

Diese Seite befasst sich mit Podman, einer Alternative zur Docker-Umgebung, um (Docker-)Images und Container zu managen und Container laufen zu lassen. Dabei kommt Podman ohne Daemon aus und benötigt daher keine Root-Rechte. Außerdem kann Podman mit Pods (bekannt aus Kubernetes) umgehen.

Es geht hier vor allem um Änderungen und Besonderheiten von Podman, wenn man damit Docker ersetzen möchte.

Management von Images und Containern

Podman ist fast vollständig befehls-kompatibel zu Docker. Man kann also genau wie bei Docker einen Container starten. Der "docker" Befehl wird nur gegen "podman" ausgetauscht.

Beispiel für GitLab

podman run --detach \
    --hostname gitlab.kruedewagen.de \
    --publish 9443:9443 --publish 9080:9080 --publish 9022:22 \
    --name gitlab \
    --restart always \
    --volume /srv/gitlab/config:/etc/gitlab \
    --volume /srv/gitlab/logs:/var/log/gitlab \
    --volume /srv/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:latest

Container bei Systemstart automatisch starten

Das automatische Starten eines Containers muss wie ein normaler Service in das Linux-System eingebaut werden, da kein eigener Daemon zur Verfügung steht.

Bei systemd geht einfach mit einer eingebauten Generator (Beispiel GitLab):

podman generate systemd gitlab > /etc/systemd/system/gitlab.service
systemctl daemon-reload
systemctl enable gitlab
systemctl start gitlab

Achtung: Die systemd Service-Datei enthält Referenzen zur Container-ID. Daher muss die systemd Service-Datei nach jedem Wechsel der Container-ID neu erstellt werden (also nach Löschen und Neuerstellung des Containers, z.B. nach Update des Images).

Weblinks:

Podman API

Wenn Container auf die Podman API zugreifen müssen (z.B. über ein Socket), muss der Podman API Service laufen.

Ein Podman-Socket kann dann rückwärts-kompatibel zu Docker so in den Container hinein gereicht werden:

podman run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /run/podman/podman.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

Weblinks:

Siehe auch