Home ITHome ServerDocker auf FreeBSD und OpenBSD: Die ehrliche Antwort

Docker auf FreeBSD und OpenBSD: Die ehrliche Antwort

by Dimitri Roschkowski
0 Kommentare

Die kurze Antwort zuerst, damit du nicht eine Stunde suchst: Docker läuft auf FreeBSD und OpenBSD nicht. Nicht „schlecht“, nicht „mit Einschränkungen“ – es gibt keine native Portierung, und es wird auch keine geben.

Das ist keine Nachlässigkeit der BSD-Projekte, sondern eine Folge der Bauweise: Docker setzt auf Linux-Kernel-Funktionen auf – Namespaces, cgroups und OverlayFS. Die gibt es außerhalb von Linux nicht, und sie lassen sich nicht nachbauen, ohne den Kernel umzuschreiben.

Die längere und nützlichere Antwort: Beide Systeme haben eigene Wege, Dienste voneinander zu trennen – und FreeBSD hatte sie ein Jahrzehnt vor Docker. Dieser Artikel zeigt, was es stattdessen gibt und wie du zu Container-Abbildern kommst, wenn du sie wirklich brauchst.

Transparenzhinweis: Dieser Artikel beruht auf dem FreeBSD-Handbook, der Dokumentation des FreeBSD-Foundation-Projekts zu OCI-Containern und der OpenBSD-Dokumentation, Stand September 2026. Er wurde nicht auf eigener BSD-Hardware nachgeprüft.

Das Wichtigste in Kürze

  • Kein natives Docker auf FreeBSD und OpenBSD – die nötigen Kernel-Funktionen fehlen.
  • FreeBSD hat Jails (seit 2000) und inzwischen Podman mit der Laufzeit ocijail – experimentell, aber echt.
  • OpenBSD hat gar keine Container-Technik. Nur den Hypervisor vmm.
  • Brauchst du zwingend Docker-Abbilder, ist eine kleine Linux-VM auf dem BSD-Wirt der pragmatische Weg.

FreeBSD: Jails – das Original

FreeBSD hat mit Jails eine Container-Technik, die 2000 eingeführt wurde – dreizehn Jahre vor Dockers erster Veröffentlichung. Eine Jail ist eine abgeschottete Umgebung mit eigenem Dateisystembaum, eigenen Netzwerkadressen und eigenen Prozessen, ohne den Aufwand einer virtuellen Maschine.

Der Unterschied zu Docker ist weniger technisch als kulturell:

Docker FreeBSD Jails
Grundgedanke ein Prozess pro Container, kurzlebig, wegwerfbar ein ganzes System im Kleinen, langlebig
Verteilung fertige Abbilder aus Registries selbst aufgesetzt, oft per Skript
Konfiguration compose.yaml jail.conf oder Verwaltungswerkzeuge
Ökosystem riesig, für fast alles ein Abbild klein, dafür sehr stabil

Für den Betrieb von Diensten sind Jails hervorragend – schlank, ausgereift, seit einem Vierteljahrhundert im Einsatz. Was fehlt, ist die Bequemlichkeit, ein fremdes Projekt mit einer Zeile zu starten.

Jails von Hand einzurichten ist mühsam, deshalb nutzt man Verwaltungswerkzeuge aus den Ports:

pkg install bastille

Bastille ist das aktuell am aktivsten gepflegte Werkzeug und fühlt sich in der Bedienung an wie ein Container-Kommando:

bastille bootstrap 14.2-RELEASE
bastille create meindienst 14.2-RELEASE 10.0.0.10
bastille start meindienst
bastille console meindienst

Alternativen sind iocage und, wenn du ohnehin TrueNAS einsetzt, die dort eingebaute Jail-Verwaltung.

FreeBSD: Podman mit OCI-Containern

Die interessante Entwicklung der letzten Jahre: FreeBSD kann inzwischen OCI-Container ausführen – also dasselbe Abbildformat, das auch Docker nutzt. Möglich macht das Podman mit der Laufzeitumgebung ocijail, die OCI-Container als FreeBSD-Jails betreibt. Das FreeBSD-Handbook hat dafür inzwischen ein eigenes Kapitel, und die FreeBSD Foundation fördert die Arbeit aktiv.

pkg install podman ocijail

Danach funktionieren die gewohnten Befehle:

podman run --rm -it freebsd-latest /bin/sh
podman ps
podman images

Was du realistisch erwarten darfst:

  • FreeBSD-eigene OCI-Abbilder laufen gut. Das ist der vorgesehene Anwendungsfall.
  • Manche Linux-Abbilder laufen über FreeBSDs Linux-Kompatibilitätsschicht – aber nur, solange sie keine Kernel-Funktionen brauchen, die FreeBSD nicht hat.
  • Produktionsreif ist das nicht für jede Last. Die Unterstützung gilt weiterhin als experimentell.

Wer also hofft, mit Podman auf FreeBSD einfach eine beliebige compose.yaml aus dem Netz zu starten, wird enttäuscht. Wer FreeBSD-Abbilder mit Container-Werkzeugen verwalten will, bekommt genau das.

OpenBSD: Keine Container, und das ist Absicht

OpenBSD hat keine Container-Technik. Keine Jails, kein Podman, kein Docker. Das ist keine Lücke, die noch gefüllt wird, sondern eine Haltung: Das Projekt legt Wert auf einen kleinen, überprüfbaren Kernel und lehnt Komplexität ab, deren Sicherheitsgewinn es für fragwürdig hält.

Was OpenBSD stattdessen anbietet:

chroot(8) – Dateisystem-Abschottung, seit Jahrzehnten vorhanden. Viele OpenBSD-Dienste laufen von sich aus in einem Chroot, etwa der Webserver httpd. Das isoliert Dateizugriffe, aber nicht Prozesse, Netzwerk oder Ressourcen.

pledge(2) und unveil(2) – OpenBSDs eigener Ansatz. Ein Programm erklärt darin selbst, welche Systemaufrufe und welche Pfade es künftig noch braucht; alles andere wird vom Kernel verweigert. Das ist feingranularer als jeder Container, verlangt aber, dass das Programm es unterstützt. Du kannst es nicht von außen auf fremde Software anwenden.

vmm(4) mit vmd(8) – der eingebaute Hypervisor. Damit betreibst du vollständige virtuelle Maschinen, und das ist der Weg zu Docker auf OpenBSD.

Der pragmatische Weg: Docker in einer kleinen Linux-VM

Wenn du auf einem BSD-Wirt bleiben willst und trotzdem Docker-Abbilder brauchst, ist das die etablierte Lösung: eine minimale Linux-VM, in der Docker läuft. Als Gastsystem hat sich Alpine Linux bewährt – wenige Dutzend Megabyte, schneller Start, sparsam im Betrieb.

Auf FreeBSD mit bhyve

FreeBSD bringt den Hypervisor bhyve mit. Die Verwaltung wird mit vm-bhyve aus den Ports deutlich angenehmer:

pkg install vm-bhyve
sysrc vm_enable="YES"
sysrc vm_dir="zfs:zroot/vm"
vm init
vm switch create public
vm create -t alpine -s 20G dockerhost
vm install dockerhost alpine-virt.iso
vm console dockerhost

In der VM installierst du Docker dann wie auf jedem Linux – bei Alpine mit apk add docker docker-cli-compose und rc-update add docker.

Auf OpenBSD mit vmd

OpenBSD nutzt vmctl zur Steuerung. Grundsätzlicher Ablauf: Ein Netzwerk-Switch in /etc/vm.conf, ein Plattenabbild mit vmctl create, dann die Alpine-ISO starten:

vmctl create -s 20G /var/vm/docker.qcow2
vmctl start dockerhost -m 2G -i 1 -d /var/vm/docker.qcow2 -r alpine-virt.iso
vmctl console dockerhost

Damit die VM dauerhaft läuft, gehört die Definition in /etc/vm.conf und vmd wird mit rcctl enable vmd aktiviert. OpenBSDs vmd ist in den letzten Jahren deutlich zuverlässiger geworden, bleibt aber schlanker als bhyve – rechne nicht mit Grafikdurchleitung oder exotischen Geräten.

Den Docker-Dienst vom Wirt aus ansprechen

Eleganter Kniff: Du kannst den Docker-Befehl auf dem BSD-Wirt nutzen und den Dienst in der VM ansprechen. Auf dem Wirt installierst du nur den Client und setzt:

export DOCKER_HOST=ssh://dockerhost

Der Zugriff läuft über SSH, es wird kein Port geöffnet. Damit arbeitest du auf dem BSD-System, während die Container in der VM laufen.

Was dieser Weg kostet: Du betreibst ein zweites Betriebssystem mit eigenen Updates. Die Trennung zwischen Wirt und Container ist dadurch allerdings härter als bei Docker direkt auf Linux – eine Kompromittierung im Container bleibt in der VM. Sicherheitstechnisch ist das eher ein Gewinn.

Was solltest du nun tun?

Ehrliche Empfehlungen, je nachdem, woher du kommst:

Du willst Docker und hast keinen besonderen Grund für BSD. Nimm Linux. Debian ist für einen Server, der durchlaufen soll, die ruhigste Wahl. Alles, was du im Netz an Anleitungen und compose.yaml-Dateien findest, funktioniert dort ohne Übersetzungsarbeit.

Du bist auf FreeBSD, weil du ZFS und Jails schätzt. Bleib bei Jails. Für Dienste sind sie ausgereift und schlank; Bastille nimmt dir die Handarbeit ab. Container-Abbilder aus dem Netz brauchst du seltener, als es zunächst scheint.

Du bist auf FreeBSD und brauchst einzelne Abbilder. Probiere Podman mit ocijail. Rechne damit, dass FreeBSD-Abbilder gut laufen und Linux-Abbilder eine Wundertüte sind.

Du bist auf OpenBSD. Container wirst du dort nicht bekommen. Entweder du löst die Aufgabe mit chroot und den Bordmitteln – oder du setzt eine Alpine-VM unter vmd auf und betreibst Docker darin.

Du hast einen Heimserver und überlegst noch. Dann ist die Frage nicht BSD oder Linux, sondern was du betreiben willst. Für eine Sammlung fertiger Dienste – Medienserver, Smart Home, Dokumentenverwaltung – ist Docker auf Linux mit Abstand der kürzeste Weg. Für einen reinen Dateiserver mit ZFS spielt FreeBSD seine Stärken aus.

Hardware für BSD-Server

FreeBSD spielt seine Stärken beim Dateiserver aus – dort zählen Platten und Arbeitsspeicher für ZFS.

* Affiliate-Links: Als Amazon-Partner verdienen wir an qualifizierten Käufen. Bitte prüfe die Kompatibilität mit deinem System.

Häufige Fragen

Gab es nicht mal ein Docker für FreeBSD?

Ja, um 2015 gab es einen experimentellen Port, der Jails und ZFS als Unterbau nutzte. Er wurde nie fertig und ist seit Jahren nicht mehr gepflegt. Wer heute darauf stößt, sollte ihn nicht einsetzen – die aktuelle Entwicklung läuft über Podman mit ocijail.

Was ist mit dem Linuxulator?

FreeBSDs Linux-Kompatibilitätsschicht führt Linux-Programme aus, indem sie Systemaufrufe übersetzt. Für einzelne Anwendungen funktioniert das gut. Der Docker-Dienst selbst braucht aber Kernel-Funktionen, keine Systemaufrufe – die Schicht hilft hier nicht.

Kann ich meine compose.yaml auf FreeBSD nutzen?

Podman kennt podman-compose, das die Dateien größtenteils versteht. Ob die darin genannten Abbilder laufen, ist die andere Frage – bei Linux-Abbildern mit Datenbanken oder systemd darin meist nicht.

Ist eine Jail sicherer als ein Docker-Container?

Tendenziell ja. Jails sind älter, konzeptionell einfacher und tiefer im Kernel verankert, während Docker-Container aus mehreren Kernel-Funktionen zusammengesetzt sind. In der Praxis hängt die Sicherheit aber mehr daran, wie du sie konfigurierst – ein Container mit --privileged ist unsicherer als jede Jail.

Und TrueNAS?

Guter Hinweis: TrueNAS gibt es in einer FreeBSD- und einer Linux-Fassung. Die Linux-Variante setzt auf Docker beziehungsweise Kubernetes und ist der Weg, wenn du Container-Anwendungen auf einem NAS willst. Die FreeBSD-Variante arbeitet mit Jails.

Läuft Docker Desktop auf FreeBSD?

Nein. Docker Desktop gibt es für Windows, macOS und Linux. Es ist ohnehin nur eine grafische Oberfläche über einer versteckten Linux-VM – auf BSD baust du diese VM eben selbst.

Fazit

Dass Docker auf FreeBSD und OpenBSD nicht läuft, ist keine Nachlässigkeit, sondern eine Konsequenz: Docker ist im Kern eine Sammlung von Linux-Kernel-Funktionen mit bequemer Verpackung.

FreeBSD bietet mit Jails eine ausgereifte eigene Antwort und mit Podman plus ocijail einen echten, wenn auch experimentellen Weg zu OCI-Abbildern. OpenBSD verzichtet bewusst ganz darauf und verweist auf seinen Hypervisor.

Wenn du Docker-Abbilder brauchst und BSD trotzdem als Wirt behalten willst, ist eine Alpine-VM der sauberste Kompromiss – und sicherheitstechnisch nicht der schlechteste. Willst du dagegen einfach, dass Container funktionieren, nimm Debian und sei in fünf Minuten fertig.

Alle Anleitungen im Überblick: Docker auf jedem System installieren.

You may also like

Hinterlasse einen Kommentar