Buildah

Buildah

Voraussetzungen

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.

# 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

Kurzcheckliste vor produktivem Einsatz

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

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.