23 Konfigurationsdateien (storage.conf, registries.conf, containers.conf)

23.1 Das Rückgrat der Container-Engine

Podman ist modular aufgebaut. Viele Verhaltensweisen sind nicht im Binary kodiert, sondern in klar strukturierten Konfigurationsdateien hinterlegt. Diese Dateien definieren zentrale Aspekte wie Storage, Netzwerk, Runtimes oder Registry-Verhalten. Sie sind das Steuerwerk der Engine und bestimmen maßgeblich, wie Container auf einem System ausgeführt, gespeichert und bezogen werden.

Podman nutzt drei Kernkonfigurationen:

Jede dieser Dateien existiert sowohl systemweit als auch benutzerspezifisch. Das ermöglicht ein sauberes Trennen von administrativen Vorgaben und individuellen Entwicklerprofilen.


23.2 storage.conf: das Fundament des Container-Storage

Typische Orte:

Die Datei definiert Parameter für die Storage-Engine. Die wichtigsten:

23.2.1 Schlüsselparameter

Beispiel:

[storage]
driver = "overlay"
graphroot = "/var/lib/containers/storage"
runroot = "/var/run/containers/storage"

[storage.options]
mountopt = "nodev,fsync=0"

23.2.2 Relevanz in der Praxis

Storage entscheidet direkt über Performance und Stabilität:

Die storage.conf ist damit eine zentrale Stellschraube für Startgeschwindigkeit, Platzverbrauch und I/O-Verhalten.


23.3 registries.conf: Steuerung des gesamten Image-Ökosystems

Standardpfade:

Die Datei legt fest:

Beispiel:

unqualified-search-registries = ["docker.io", "quay.io"]

[[registry]]
location = "registry.internal.example.com"
insecure = false
blocked = false

23.3.1 Praktische Auswirkungen

Ein Befehl wie:

podman run python:3.11

führt zu einer Suche im definierten unqualified-search-registries-Array. Die Reihenfolge entscheidet über:

Wer ein eigenes Registry-Layout betreibt, sollte diese Datei bewusst gestalten.

23.3.2 Zertifikatsverwaltung

TLS-Zertifikate für private Registries liegen unter:

/etc/containers/certs.d/<registry>/ca.crt

Damit können interne Registries sicher und ohne globale CA-Anpassungen betrieben werden.


23.4 containers.conf: Defaults für Runtime, Netzwerk und Sicherheit

Dies ist die umfangreichste Konfigurationsdatei. Sie definiert, wie Container standardmäßig ausgeführt werden.

Pfadstruktur:

Podman liest in der Reihenfolge: user → system → global. Damit können einzelne Parameter gezielt überschrieben werden.

23.4.1 Beispiel:

[engine]
runtime = "crun"
cgroup_manager = "systemd"
network_backend = "netavark"
events_logger = "journald"

[containers]
log_driver = "k8s-file"
pids_limit = 4096
ipcns = "private"
utsns = "private"

23.4.2 Technische Bedeutung

23.4.2.1 Runtime: crun vs. runc

crun ist in vielen Szenarien schneller und ressourcenschonender, insbesondere bei vielen kurzlebigen Containern. runc ist weit verbreitet und stabil, aber tendenziell langsamer.

23.4.2.2 Netzwerk-Backend: netavark

Netavark ist das moderne Podman-Netzwerkbackend. Es ist für daemonlose Engines optimiert und vermeidet die Komplexität von CNI-Plugins.

23.4.2.3 Logging: k8s-file

Erzeugt Logs im Kubernetes-kompatiblen Format und ist hilfreich, wenn Container lokal und im Cluster identisch ausgewertet werden sollen.

23.4.2.4 Cgroup-Manager: systemd

Sinnvoll, wenn Hostsysteme systemd nativ nutzen. Ermöglicht saubere Ressourcenverwaltung ohne manuelle Cgroup-Konfiguration.


23.5 Zusammenspiel der Konfigurationsdateien

Eine vereinfachte Übersicht:

Jede Datei steuert einen anderen Aspekt:

Diese Trennung macht das Verhalten vorhersehbar, reproduzierbar und klar administrierbar.


23.6 Warum diese Dateien wirklich relevant sind

Viele Eigenschaften von Podman – Performance, Netzwerkverhalten, Kompatibilität, Startzeiten, Registryzugriffe, Ressourcenverwaltung – werden nicht durch Kommandos, sondern durch diese Konfigurationsdateien bestimmt.

Sie sind die Grundlage für:

Es sind nur drei Dateien, aber sie definieren nahezu alle zentralen Betriebsparameter einer Podman-Installation.