Zum Inhalt

Docker im Rootless-Modus betreiben

Veröffentlicht am 27. August 2026 · Geschätzte Lesezeit: 5 Minuten

Im Rootless-Modus laufen sowohl der Docker-Dienst als auch seine Container unter einem normalen Linux-Benutzer. Das verringert die Folgen vieler möglicher Sicherheitslücken, weil der Docker-Daemon keine Root-Rechte besitzt. Die Umstellung vorhandener Anwendungen erfolgt nicht automatisch. Plane deshalb etwa 45 Minuten für Installation, Test und eine schrittweise Migration ein.

Voraussetzungen

  • Ein Debian- oder Ubuntu-Server mit Docker Engine aus der offiziellen Docker-Paketquelle
  • Ein normaler Linux-Benutzer mit sudo-Rechten
  • Backups aller Compose-Dateien, Datenbanken und eingebundenen Datenordner
  • Konsolenzugriff oder eine zweite SSH-Sitzung als Rückweg

1. Vorhandene Docker-Umgebung erfassen

Zeige zunächst den aktuell verwendeten Docker-Kontext an. Führe den Befehl als normaler Benutzer aus:

docker context show

Notiere die laufenden Container und ihre Namen:

docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}'

Suche anschließend deine Compose-Dateien und sichere sie zusammen mit den Anwendungsdaten. Rootless Docker verwendet einen eigenen Speicherbereich und übernimmt vorhandene Container, Images und Volumes nicht automatisch.

Warning

Stoppe den bisherigen Docker-Dienst noch nicht. Richte Rootless Docker zunächst parallel ein und teste eine unkritische Anwendung. So bleibt der bisherige Docker-Kontext als Rückweg verfügbar.

2. Voraussetzungen installieren

Aktualisiere die Paketliste auf dem Server:

sudo apt update

Installiere die Werkzeuge für untergeordnete Benutzer- und Gruppen-IDs sowie Benutzerdienste:

sudo apt install uidmap dbus-user-session

Falls das Rootless-Einrichtungswerkzeug noch fehlt, installiere das offizielle Zusatzpaket:

sudo apt install docker-ce-rootless-extras

3. Untergeordnete IDs prüfen

Prüfe als normaler Benutzer den Eintrag in /etc/subuid:

grep "^$(whoami):" /etc/subuid

Prüfe danach den entsprechenden Eintrag in /etc/subgid:

grep "^$(whoami):" /etc/subgid

Beide Ausgaben müssen einen Bereich mit mindestens 65.536 IDs zeigen. Fehlt ein Eintrag, brich die Einrichtung ab. Das Rootless-Werkzeug nennt beim Start die fehlende Voraussetzung; ändere die ID-Bereiche nicht ohne vorherige Sicherung und Prüfung vorhandener Benutzerzuordnungen.

4. Rootless Docker einrichten

Starte die Einrichtung als normaler Benutzer, nicht mit sudo. Weil der bisherige systemweite Docker-Dienst vorerst weiterläuft, wird --force benötigt:

dockerd-rootless-setuptool.sh install --force

Das Werkzeug erstellt einen benutzereigenen Systemd-Dienst und normalerweise den Docker-Kontext rootless. Beachte am Ende der Ausgabe mögliche Hinweise zu Umgebungsvariablen.

Erlaube dem Benutzerdienst, auch ohne aktive Anmeldung zu starten. Ersetze <linux-benutzer> durch den Benutzer, unter dem Rootless Docker eingerichtet wurde:

sudo loginctl enable-linger <linux-benutzer>

5. Benutzerdienst und Kontext prüfen

Zeige den Zustand des Rootless-Docker-Dienstes an. Dieser Befehl wird ohne sudo ausgeführt:

systemctl --user status docker --no-pager

Liste anschließend alle Docker-Kontexte auf:

docker context ls

Aktiviere den Rootless-Kontext:

docker context use rootless

Kontrolliere, ob der Serverteil tatsächlich als Rootless-Daemon läuft:

docker info | grep -i rootless

6. Testcontainer starten

Starte einen kurzlebigen offiziellen Testcontainer:

docker run --rm hello-world

Der Test lädt ein kleines Image, startet es im Rootless-Daemon und entfernt den Container danach wieder. Die Erfolgsmeldung bestätigt nur die Grundfunktion; Anwendungen mit Geräten, Host-Netzwerk oder niedrigen Ports müssen separat geprüft werden.

7. Erste Compose-Anwendung migrieren

Wähle eine unkritische Anwendung mit aktuellem Datenbackup. Wechsle in ihren Compose-Ordner. Ersetze <app-ordner> durch den vollständigen Pfad:

cd <app-ordner>

Prüfe vor dem Start, dass weiterhin der Rootless-Kontext aktiv ist:

docker context show

Starte die Anwendung im Rootless-Daemon:

docker compose up -d

Kontrolliere Status und Protokoll:

docker compose ps
docker compose logs --tail=100

Warning

Rootless Docker kann privilegierte Container, direkten Gerätezugriff, network_mode: host und Ports unter 1024 nicht in jeder Umgebung unverändert abbilden. Migriere solche Dienste erst nach Prüfung der offiziellen Einschränkungen. Ein Reverse Proxy auf einem höheren internen Port ist häufig der sauberere Weg.

8. Bind-Mounts und Rechte prüfen

Erstellt oder verändert die Anwendung keine Dateien, kontrolliere die Rechte des eingebundenen Host-Ordners. Ersetze <datenordner> durch den tatsächlichen Pfad:

ls -ld <datenordner>

Ändere Besitzer oder Rechte nicht pauschal mit 777. Prüfe zuerst, welche UID und GID das Image erwartet und wie Rootless Docker diese IDs auf dem Host abbildet. Nutze nach Möglichkeit benannte Docker-Volumes für neue Anwendungen.

9. Systemweiten Docker-Dienst erst später abschalten

Migriere jede Anwendung einzeln und teste sie. Erst wenn alle benötigten Dienste im Rootless-Kontext zuverlässig laufen, kannst du den alten Root-Daemon deaktivieren:

sudo systemctl disable --now docker.service docker.socket

Prüfe danach erneut den Rootless-Dienst:

systemctl --user status docker --no-pager

Danger

Deaktiviere den systemweiten Docker-Dienst nicht, solange dort noch benötigte Container oder nur dort vorhandene Volumes liegen. Das Umschalten des Kontextes verschiebt keine Daten.

10. Rückweg verwenden

Wenn eine Anwendung im Rootless-Modus nicht funktioniert, wechsle zurück zum bisherigen Kontext:

docker context use default

Starte bei Bedarf den systemweiten Docker-Dienst wieder:

sudo systemctl enable --now docker.service docker.socket

Den Rootless-Dienst kannst du parallel stoppen, ohne seine Daten zu löschen:

systemctl --user disable --now docker

Lösche den Rootless-Datenordner erst, wenn alle Daten gesichert und die Rückkehr erfolgreich getestet wurde.

11. Typische Fehler beheben

  • Das Einrichtungswerkzeug fehlt: Prüfe, ob docker-ce-rootless-extras aus der offiziellen Docker-Paketquelle installiert ist.
  • Der Dienst startet erst nach der Anmeldung: Kontrolliere loginctl enable-linger <linux-benutzer>.
  • Ein Port lässt sich nicht binden: Verwende einen Port ab 1024 oder einen passend abgesicherten Reverse Proxy.
  • Ein Container sieht keine Geräte: Rootless Docker schränkt Geräte- und Privilegienzugriffe bewusst ein. Prüfe, ob dieser Dienst für Rootless geeignet ist.
  • Die alten Container fehlen: Kontrolliere docker context show; Rootless- und Root-Daemon besitzen getrennte Container- und Volume-Bestände.

Grundlage dieser Anleitung sind die aktuellen offiziellen Docker-Seiten zum Rootless-Modus und zur Fehlerbehebung, geprüft am 26. August 2026. Eine ergänzende Video-Erklärung bietet Docker Rootless Mode Tutorial: Complete Security Guide.

Fertig

Docker läuft jetzt testweise oder vollständig als normaler Benutzer. Die Funktionsprüfung ist erfolgreich, wenn der Kontext rootless aktiv ist, docker info Rootless meldet, der Testcontainer startet und die migrierte Anwendung ohne Rechte- oder Netzwerkfehler arbeitet.