Skip to content
BotServBotServ
DockerRootlessSicherheitContainerPermissions

Rootless Docker betreiben

Docker ohne root-Rechte ausführen. Vorteile, Installation, Einschränkungen und GPU-Passthrough im Rootless-Modus.

S

schutzgeist

3 min read
Rootless Docker betreiben

Rootless Docker betreiben

Was dieser Artikel über Rootless Docker behandelt

  • Was Rootless Docker ist.
  • Warum es das Sicherheitsrisiko reduziert.
  • Wie man es installiert und konfiguriert.
  • Einschränkungen und Kompatibilität.
  • GPU-Passthrough und typische Fehler.

Einleitung: Rootless Docker betreiben

Standardmässig läuft der Docker-Daemon als root. Wenn ein Container ausbricht oder eine Schwachstelle ausgenutzt wird, erlangt ein Angreifer potenziell root-Rechte auf dem Host. Rootless Docker verschiebt den Daemon in den Benutzerkontext. Ein erfolgreicher Angriff hat dann nur die Rechte des unprivilegierten Benutzers, was die Angriffsfläche deutlich reduziert.

Dieser Artikel zeigt, wie Rootless Docker funktioniert, wie man es einrichtet und wann es sinnvoll ist.

Wichtige Begriffe

  • Rootless: Ohne root-Rechte laufend.
  • User Namespace: Abgrenzung von Benutzer-IDs im Container.
  • Rootlesskit: Tool, das Rootless-Funktionen ermöglicht.
  • Daemon: Hintergrundprozess, der Container verwaltet.
  • OverlayFS: Dateisystem, das Rootless unterstützt.
  • Cgroups: Ressourcenverwaltung in Linux.
  • Privileged Ports: Ports unter 1024, für die root nötig war.
  • Docker Context: Umgebungskonfiguration für Docker.

Vorteile von Rootless Docker

  • Container-Breakout führt nicht zu root-Rechten.
  • Daemon läuft im Benutzerkontext.
  • Weniger Angriffsfläche auf dem Host.
  • Bessere Trennung zwischen Benutzer- und Systemprozessen.
  • Sicherer für Multi-User-Umgebungen.

Voraussetzungen

  • Linux mit Kernel-Unterstützung für User Namespaces.
  • newuidmap und newgidmap installiert.
  • Docker-Paket mit Rootless-Support.
  • Overlay2 oder kompatibles Dateisystem.

Installation

sudo apt-get update
sudo apt-get install -y uidmap

dockerd-rootless-setuptool.sh install

Danach den Hinweis zur Umgebungsvariable beachten:

export DOCKER_HOST=unix:///run/user/$UID/docker.sock

Oder in .bashrc oder .zshrc eintragen.

Rootless Docker starten

systemctl --user start docker
systemctl --user enable docker

Prüfen:

docker info
docker context ls

Unterschiede zu normalem Docker

  • docker Befehle laufen im Benutzerkontext.
  • Container sind für den Benutzer sichtbar, nicht systemweit.
  • Standard-Ports unter 1024 brauchen zusätzliche Konfiguration.
  • Systemd-Services laufen unter --user.
  • Volumes liegen im Home-Verzeichnis des Benutzers.

Privileged Ports

Ports unter 1024 benötigen normale root-Rechte. Rootless kann sie nicht direkt binden. Lösungen:

  • Port über 1024 nutzen, zum Beispiel 8080 statt 80.
  • sysctl net.ipv4.ip_unprivileged_port_start=0 setzen, um alle Ports für den Benutzer freizugeben.
  • Reverse Proxy mit root-Rechten davor schalten.

GPU-Passthrough im Rootless-Modus

GPU-Passthrough ist komplizierter, weil die GPU-Gerätedateien besondere Rechte brauchen:

  • Der Benutzer muss in der Gruppe video oder render sein.
  • udev-Regeln müssen die Geräte zugänglich machen.
  • Das Nvidia Container Toolkit kann Rootless nicht ohne weiteres nutzen.

Für GPU-Workloads ist Rootless Docker daher oft nicht die erste Wahl. Rootfull Docker oder alternative Lösungen sind häufig einfacher.

Compose mit Rootless

Compose funktioniert im Rootless-Modus, solange die Umgebung korrekt ist:

docker compose up -d

Volumes liegen dann unter ~/.local/share/docker/volumes/.

Logs und Debugging

journalctl --user -u docker
docker logs containername

Fehlende Rechte oder falsche Contexte sind häufige Fehlerquellen.

Sicherheit

  • Rootless reduziert, aber eliminiert nicht alle Risiken.
  • Die Benutzer-ID im Container sollte nicht root sein.
  • Capabilities weiterhin einschränken.
  • Sensible Verzeichnisse nicht in Container mounten.
  • Secrets aus dem Home-Verzeichnis fernhalten.

Wann lohnt sich Rootless?

  • Multi-User-Systeme.
  • Shared Hosting.
  • Entwicklungsumgebungen.
  • Sensible Server ohne GPU-Abhängigkeit.
  • Umgebungen, in denen root minimiert werden soll.

Für KI-Workloads mit GPU ist Rootless oft schwieriger, weil Treiber und Gerätezugriffe komplexer sind.

Typische Stolpersteine

  • DOCKER_HOST nicht gesetzt: Docker-Befehle schlagen fehl.
  • uidmap fehlt: Installation bricht ab.
  • Systemd nicht als User aktiviert: Daemon startet nicht automatisch.
  • Port 80 nicht verfügbar: Port-Mapping schlägt fehl.
  • GPU nicht erreichbar: Berechtigungen oder Toolkit fehlen.
  • Volumes am falschen Ort: Daten scheinen verschwunden.
  • Images nicht sichtbar: Rootless- und System-Docker sind getrennt.

FAQ: Rootless Docker

Ist Rootless Docker langsamer? Kaum. OverlayFS und Netzwerk können leicht anders sein.

Kann ich Rootless mit Compose nutzen? Ja, Compose funktioniert im Rootless-Modus.

Warum startet mein Daemon nicht? Häufig fehlt DOCKER_HOST oder der User-Service ist nicht aktiviert.

Kann ich Ports unter 1024 nutzen? Nur mit zusätzlicher Konfiguration oder einem Reverse Proxy.

Ist Rootless Docker für Server geeignet? Ja, wenn keine komplexen Hardware-Integrationen nötig sind.

Quellen und weiterführende Literatur

Zusammenfassung: Rootless Docker betreiben

Rootless Docker erhöht die Sicherheit, indem der Daemon im Benutzerkontext läuft. Das reduziert die Auswirkungen eines Container-Breakouts erheblich. Einrichtung und Betrieb sind auf modernen Linux-Systemen gut machbar, bringen aber Einschränkungen bei Ports unter 1024, Systemd-Integration und GPU-Passthrough mit sich. Für Multi-User-Umgebungen, Entwicklungsrechner und sicherheitskritische Setups ist Rootless eine sinnvolle Option, während GPU-basierte KI-Workloads oft einfacher im klassischen Modus laufen.

Zurück zum KI Blog
Share:

Ähnliche Beiträge