
Buildah
Voraussetzungen
- Ein Linux-System (verschiedene Distributionen verhalten sich anders; diese Anleitung funktioniert in den meisten Debian/Ubuntu- und Fedora-basierten Setups, kann aber Anpassungen erfordern).
- Benutzer mit sudo-Rechten.
- Mindestens 2 GB freier Speicher; für große Container-Images entsprechend mehr.
- Optional: Podman oder Docker, wenn du Images in lokale Registries testen willst.
Hinweis zur Hardware/Kompatibilität: Nicht alle Distributionen liefern Buildah als aktuelles Paket; bei älteren Kerneln oder strikten LSMs (SELinux/AppArmor) kann Rootless-Betrieb eingeschränkt sein.
Schritt 1: Installation von Buildah
Debian/Ubuntu:
sudo apt update
sudo apt install -y buildah
Fedora:
sudo dnf install -y buildah
Bei Problemen mit Paketversionen oder wenn deine Distribution kein Paket liefert, installiere aus den upstream-Releases oder baue aus dem Quellcode (hier nicht gezeigt).
Schritt 2: Rootless oder rootful verwenden — Empfehlung: Rootless
Buildah unterstützt rootless Betrieb, was sicherer ist. Für rootless-Betrieb benötigt dein Benutzer ein funktionierendes subuid/subgid-Setup.
Prüfen:
grep "^$USER:" /etc/subuid /etc/subgid || echo "subuid/subgid nicht gesetzt"
Wenn nicht gesetzt, füge Einträge als root hinzu:
sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $USER
Abmelden/neu anmelden, dann Test:
buildah info
Schritt 3: Basis-Image erstellen (ohne Dockerfile)
Kurzes Beispiel: Erstelle ein minimales OCI-Image mit Debian und installiere curl.
# Arbeitsverzeichnis für Buildah
mkdir -p ~/buildah-work && cd ~/buildah-work
# Container-Image von scratch erstellen
ctr=$(buildah from docker.io/library/debian:stable-slim)
mnt=$(buildah mount $ctr)
# Paketliste aktualisieren und curl installieren
sudo chroot $mnt apt update
sudo chroot $mnt apt install -y curl ca-certificates
sudo chroot $mnt apt clean
# Unmount und commit
buildah umount $ctr
buildah commit $ctr myrepo/debian-curl:latest
Hinweis: chroot-Schritte können in rootless-Setups scheitern; in diesem Fall verwende buildah run:
ctr=$(buildah from docker.io/library/debian:stable-slim)
buildah run $ctr -- apt update
buildah run $ctr -- apt install -y curl ca-certificates
buildah commit $ctr myrepo/debian-curl:latest
Schritt 4: Image mit Dockerfile-ähnlicher Struktur bauen (Containerfile)
Lege eine Datei Containerfile an:
FROM debian:stable-slim
RUN apt update && apt install -y curl ca-certificates && rm -rf /var/lib/apt/lists/*
CMD ["bash"]
Buildah baut Containerfile-kompatible Dateien:
buildah bud -t myrepo/debian-curl:cf .
bud ist ähnlich wie docker build und unterstützt BuildKit-ähnliche Optionen weniger vollständig.
Schritt 5: Image lokal testen und optional in Registry pushen
Lokales Auflisten:
buildah images
Image in lokale Podman-Registry pushen (falls du Podman/Docker verwendest):
# Beispiel: lokale Registry unter localhost:5000
buildah push myrepo/debian-curl:cf docker://localhost:5000/myrepo/debian-curl:latest
Achte bei Pushs auf Authentifizierung und TLS-Konfiguration der Registry.
Wichtige Warnhinweise vor destruktiven Befehlen
Warnung: Die folgenden Befehle löschen Images/Container. Erstelle vorher Backups oder exportiere wichtige Images mit buildah save.
- Vor
buildah rmi --forceoder vergleichbaren Löschbefehlen: Backup machen. - Beispiel sicheres Löschen:
# Backup
buildah save -o myrepo-debian-curl.tar myrepo/debian-curl:latest
# Dann löschen (vorsichtig)
buildah rmi myrepo/debian-curl:latest
Häufige Fehler & Tipps
- Fehler: “cannot find /etc/subuid” — Lösung: setze subuid/subgid wie oben beschrieben oder führe Buildah als root aus.
- Langsame Container bei lokalen KI-Workloads (z. B. Modelle, Civitai-Downloads): Achte auf verfügbaren RAM/VRAM; Container starten kann langsam sein, wenn Swap verwendet wird. Lokale Modelle können viel Speicher benötigen — wähle Modellgröße nach Hardware.
- Netzwerkprobleme beim Pull: Prüfe DNS/Proxy-Einstellungen. In restriktiven Umgebungen kann Rootless-Netzwerk eingeschränkt sein.
- Sicherheit: Buildah selbst sendet keine Modell-Telemetrie, aber abgelegte Images können externe Prozesse oder Updates enthalten. Bei KI-Modellen prüfe Lizenzbedingungen (Modelle von Civitai/ComfyUI/InvokeAI/Ollama sind unterschiedlich lizenziert) — lade und betreibe Modelle nur, wenn Lizenz und Nutzungsbedingungen es erlauben.
- Integration mit Ollama/Others: Du kannst mit Buildah Images bauen, die lokal Modelle oder Inferenz-Server enthalten (z. B. Ollama). Achte darauf, dass Services nicht ungewollt nach außen exponiert werden. Öffne Ports gezielt und absichere Zugriff per Firewall/Authentifizierung.
Kurzcheckliste vor produktivem Einsatz
- subuid/subgid korrekt gesetzt für Rootless.
- Images vor
rmisichern (buildah save). - Modelle auf Lizenz prüfen; sensible Daten sichern.
- Firewall/Ports prüfen, keine unsichere Konfiguration (nicht einfach Firewall abschalten).
- Bei Problemen:
buildah --log-level=debug ...verwenden undbuildah containers/buildah imagesprüfen.
Diese Anleitung gibt dir die nötigen Basisbefehle und Hinweise, um Buildah sicher zu verwenden. Wegen unterschiedlicher Distributionen und Kernel-Versionen kann es nötig sein, Befehle anzupassen oder zusätzliche Pakete zu installieren.
Kommst du an dieser Stelle nicht weiter oder funktioniert ein Schritt bei dir anders als beschrieben? Schreib uns einfach kurz, woran es hakt – schreib uns eine E-Mail, wir schauen es uns gemeinsam an.
Passende Themen
- Why is dual-booting risky?
- How to install docker linux mint
- Wie installiert man Linux auf einem PC?
- Welches Linux Mint für alten Laptop?
Häufige Fragen
Sendet Ollama meine Daten an einen Server?
Beim lokalen Betrieb bleiben die Anfragen auf dem eigenen Rechner. Das gilt nicht automatisch für jede Anwendung, die auf Ollama aufsetzt - das sollte jeweils separat geprüft werden.
Welches Modell passt zu meiner Hardware?
Das hängt vor allem von verfügbarem RAM/VRAM ab. Größere Modelle liefern oft bessere Ergebnisse, benötigen aber deutlich mehr Ressourcen.
Kann ich Ollama über eine API in eigene Programme einbinden?
Ja, Ollama bietet eine lokale API-Schnittstelle dafür an. Für den Einstieg reicht ein einfacher HTTP-Aufruf gegen die lokale Adresse.