Linux native Container mit Podman und systemd

Was ist Podman

  • Container management tooling
  • Daemonless
  • Rootless möglich
  • Docker API kompatibel
Linux native Container mit Podman und systemd | Max | Kassel Code Meetup 29.01.2025

Was ist systemd

  • Primär init system
  • Resourcen werden in Unit files definiert
  • Verschiedene Alternative für Systemtools
    • journal
    • resolved
    • timesyncd
Linux native Container mit Podman und systemd | Max | Kassel Code Meetup 29.01.2025

Was sind systemd generators

  • Executables welche Units rendern
  • Werden beim Start und daemon-reload ausgeführt
Linux native Container mit Podman und systemd | Max | Kassel Code Meetup 29.01.2025

Quadlet

  • systemd generator von Podman
  • Wandelt Podman eigene Units in systemd konforme
  • Kann auch Kubernetes Manifeste lesen
  • Schaut in verschiedenen Pfaden nach Dateien
    • /etc/containers/systemd/
    • ~/.config/containers/systemd/
    • ...
Linux native Container mit Podman und systemd | Max | Kassel Code Meetup 29.01.2025

test.container

[Unit]
Description=A minimal container

[Container]
Image=quay.io/centos/centos:latest
Exec=sleep 60
Volume=test.volume:/data

[Service]
TimeoutStartSec=900

[Install]
WantedBy=multi-user.target default.target
Linux native Container mit Podman und systemd | Max | Kassel Code Meetup 29.01.2025

test.volume

[Volume]
User=root
Group=root
Label=org.test.Key=value
Linux native Container mit Podman und systemd | Max | Kassel Code Meetup 29.01.2025

test.network

[Network]
Subnet=172.16.0.0/24
Gateway=172.16.0.1
IPRange=172.16.0.0/28
Label=org.test.Key=value
Linux native Container mit Podman und systemd | Max | Kassel Code Meetup 29.01.2025

Demonstration

Linux native Container mit Podman und systemd | Max | Kassel Code Meetup 29.01.2025

Fazit / Warum

  • Klare Struktur
  • Sehr nah am System und den restlichen Services
  • Autoupdates
Linux native Container mit Podman und systemd | Max | Kassel Code Meetup 29.01.2025

Vielen Dank für die Aufmerksamkeit!

  • Fragen
Linux native Container mit Podman und systemd | Max | Kassel Code Meetup 29.01.2025
Linux native Container mit Podman und systemd | Max | Kassel Code Meetup 29.01.2025

- Kurze Vorstellung. - init systeme können wie Editors ein sehr emotional schweres Thema sein. Bitte Diskussionen nach dem Talk. - Geht auchähnlich mit anderen toolings wie Guix, heute aber Fokus auf systemd.

- Weitere Features wie: integrierte Autoupdates, Pods und auch Desktop Anwendung - Entwickelt von Redhat - Keine "Enterprise Edition" - Nutzt crun als runtime

- Unit files beschreiben unter anderem: - service - socket - timer - etc - Vereinheitlicht viel wie z.B. das log handling. - Bei den meisten Linux Distributionen das default init system - Debian - RHEL, Fedora - SUSE - Arch - etc

- Units werden bei jedem Aufruf neu generiert

- Eingeführt in Podman 4.4 - In Debian Stable aktuell noch 4.3, also kein Quadlet support

- Container Section bietet fast alle Möglichkeiten, welche auch die CLI als Options bietet - oder halt compose etc - Timeout wichtig, damit genug Zeit um image zu pullen - Kann einen schnell mal ins dockerhub ratelimit werfen, wenn z.B. Architektur nicht vorhanden.

- Kann genauso wie bei Networks eine leere Datei sein

- Kann genauso wie bei Volumes eine leere Datei sein

- Klare Struktur heisst, die Dateien haben klar vordefinierte Verzeichnisse, nicht wie bei docker compose wilder Westen - Verwaltung per systemctl und logs per journalctl - In kombination mit MicroOS sind autoupdates sehr nice - Man kann sich mit MicroOS und Podman, "stateless appliance" basteln