175 lines
3 KiB
Markdown
175 lines
3 KiB
Markdown
|
---
|
||
|
marp: true
|
||
|
paginate: true
|
||
|
author: Max
|
||
|
theme: gaia
|
||
|
footer: 'Linux native Container mit Podman und systemd | Max | Kassel Code Meetup 29.01.2025'
|
||
|
---
|
||
|
|
||
|
<!-- _paginate: false -->
|
||
|
<!-- _footer: "" -->
|
||
|
<!-- _class: lead -->
|
||
|
|
||
|
# Linux native Container mit Podman und systemd
|
||
|
|
||
|
<!--
|
||
|
- 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.
|
||
|
-->
|
||
|
|
||
|
---
|
||
|
|
||
|
# Was ist Podman
|
||
|
|
||
|
* Container management tooling
|
||
|
* Daemonless
|
||
|
* Rootless möglich
|
||
|
* Docker API kompatibel
|
||
|
|
||
|
<!--
|
||
|
- Weitere Features wie: integrierte Autoupdates, Pods und auch Desktop Anwendung
|
||
|
- Entwickelt von Redhat
|
||
|
- Keine "Enterprise Edition"
|
||
|
- Nutzt crun als runtime
|
||
|
-->
|
||
|
|
||
|
---
|
||
|
|
||
|
# Was ist systemd
|
||
|
|
||
|
* Primär init system
|
||
|
* Resourcen werden in Unit files definiert
|
||
|
* Verschiedene Alternative für Systemtools
|
||
|
- journal
|
||
|
- resolved
|
||
|
- timesyncd
|
||
|
|
||
|
<!--
|
||
|
- 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
|
||
|
-->
|
||
|
|
||
|
---
|
||
|
|
||
|
# Was sind systemd generators
|
||
|
|
||
|
* Executables welche Units rendern
|
||
|
* Werden beim Start und `daemon-reload` ausgeführt
|
||
|
|
||
|
<!--
|
||
|
- Units werden bei jedem Aufruf neu generiert
|
||
|
-->
|
||
|
|
||
|
---
|
||
|
|
||
|
# 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/
|
||
|
- ...
|
||
|
|
||
|
<!--
|
||
|
- Eingeführt in Podman 4.4
|
||
|
- In Debian Stable aktuell noch 4.3, also kein Quadlet support
|
||
|
-->
|
||
|
|
||
|
---
|
||
|
|
||
|
`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
|
||
|
```
|
||
|
|
||
|
<!--
|
||
|
- 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.
|
||
|
-->
|
||
|
|
||
|
---
|
||
|
|
||
|
`test.volume`
|
||
|
|
||
|
```
|
||
|
[Volume]
|
||
|
User=root
|
||
|
Group=root
|
||
|
Label=org.test.Key=value
|
||
|
```
|
||
|
|
||
|
<!--
|
||
|
- Kann genauso wie bei Networks eine leere Datei sein
|
||
|
-->
|
||
|
|
||
|
---
|
||
|
|
||
|
`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
|
||
|
```
|
||
|
|
||
|
<!--
|
||
|
- Kann genauso wie bei Volumes eine leere Datei sein
|
||
|
-->
|
||
|
|
||
|
---
|
||
|
|
||
|
# Demonstration
|
||
|
|
||
|
---
|
||
|
|
||
|
# Fazit / Warum
|
||
|
|
||
|
* Klare Struktur
|
||
|
* Sehr nah am System und den restlichen Services
|
||
|
* Autoupdates
|
||
|
|
||
|
<!--
|
||
|
- 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
|
||
|
-->
|
||
|
|
||
|
---
|
||
|
|
||
|
# Vielen Dank für die Aufmerksamkeit!
|
||
|
|
||
|
- Fragen
|
||
|
|
||
|
---
|