Rootless Docker: Container auf deinem Server
Auf unseren Managed Servern mit Plesk kannst du eigene Dienste als Docker-Container betreiben — rootless: Docker läuft komplett unter deinem eigenen Benutzer, ohne Root-Rechte. Ein kompromittierter Container bleibt damit auf dein Konto beschränkt, und du verwaltest alles selbst per SSH.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Freischaltung per Ticket — rootless Docker ist aktuell ein Pilot-Angebot. Wir richten den Docker-Dienst für deinen Benutzer ein, inklusive Autostart nach Server-Neustarts.
- SSH-Zugang — siehe SSH-Zugang einrichten.
Schritt für Schritt: die ersten Container
Abschnitt betitelt „Schritt für Schritt: die ersten Container“- Verbinde dich per SSH und prüfe die Einrichtung:
docker versionmuss Client und Server anzeigen. - Starte einen Test-Container:
docker run -d --name hallo --restart unless-stopped -p 127.0.0.1:8123:80 nginx:alpine - Prüfe, dass er läuft:
docker ps— und teste ihn:curl http://127.0.0.1:8123 - Schau bei Problemen ins Log:
docker logs -f hallo(Abbruch mitStrg+C). - Räum den Test wieder weg:
docker stop hallo && docker rm hallo
Die wichtigsten Befehle für den Alltag: docker ps -a (alle Container, auch gestoppte), docker images (geladene Images), docker pull <image> (Update ziehen), docker stats (Live-Ressourcenverbrauch).
Was rootless anders macht
Abschnitt betitelt „Was rootless anders macht“- Ports unter 1024 sind tabu. Ohne Root kann kein Prozess privilegierte Ports binden — Container lauschen auf hohen Ports (8123, 6379, 9200 …). Für Web-Dienste übernimmt der Reverse Proxy die Brücke zu Port 80/443.
- Binde bewusst an
127.0.0.1. Das-p 127.0.0.1:8123:80aus dem Beispiel macht den Container nur lokal erreichbar. Von außen schützt zusätzlich unsere Server-Firewall — verlass dich trotzdem nicht allein darauf: Die lokale Bindung ist die saubere Grundregel, Schutz in Schichten. Umgekehrt heißt das auch: Soll ein Port bewusst von außen erreichbar sein und es kommt nichts an, blockt vermutlich die Firewall — ein Ticket genügt. - Container laufen unter deinem Benutzer. Sie erscheinen in deiner Prozessliste und zählen auf die Ressourcen deines Servers —
docker statszeigt dir, wer was verbraucht. - Neustarts überleben: Der Docker-Dienst startet bei uns automatisch mit dem Server; Container mit
--restart unless-stoppedkommen von selbst wieder hoch.
Wenn etwas schiefläuft
Abschnitt betitelt „Wenn etwas schiefläuft“docker: command not found oder nur der Client antwortet
Abschnitt betitelt „docker: command not found oder nur der Client antwortet“Rootless Docker ist für deinen Benutzer noch nicht eingerichtet.
Lösung: Ticket öffnen — die Freischaltung übernehmen wir (Pilot-Angebot), danach funktioniert docker direkt nach dem SSH-Login.
Container ist nach Server-Neustart weg
Abschnitt betitelt „Container ist nach Server-Neustart weg“Der Container lief ohne Restart-Policy — Docker startet dann nur den Dienst, nicht deine Container.
Lösung: Container mit --restart unless-stopped starten (bzw. restart: unless-stopped in Compose). Bereits laufende Container rüstest du nach: docker update --restart unless-stopped <name>.
bind: permission denied beim Starten
Abschnitt betitelt „bind: permission denied beim Starten“Der Container versucht, einen Port unter 1024 zu binden — das geht rootless nicht.
Lösung: Einen hohen Port veröffentlichen (-p 127.0.0.1:8123:80) und Web-Traffic über den Reverse Proxy hereinholen.
Verwandte Artikel
Abschnitt betitelt „Verwandte Artikel“- Dienste dauerhaft betreiben mit Compose — der nächste Schritt nach dem ersten
docker run. - Container hinter deiner Domain — so kommt Web-Traffic zum Container.
- SSH-Zugang einrichten — die Grundvoraussetzung.
Du kommst nicht weiter?
Abschnitt betitelt „Du kommst nicht weiter?“Docker nicht eingerichtet, oder ein Container verhält sich unerwartet? Ticket im Kundencenter öffnen — nenn Server und Container-Name, wir schauen gemeinsam drauf.