Docker als Fundament
Container, Compose und Volumes als Basis für eigene Dienste. Die ausführliche Vertiefung findest du in der Docker-Reihe.
Hier nutzt du Docker und Compose als wartbares Fundament für eigene Dienste und lokale KI-Setups. Vor Docker war Selfhosting deutlich mühsamer. Jede Anwendung hatte eigene Abhängigkeiten, die sich gegenseitig in die Quere kommen konnten. Updates waren riskant. Neue Dienste einrichten dauerte Stunden.
Docker hat das grundlegend verändert. Heute starte ich einen neuen Dienst mit einem einzigen Befehl und weiß dass er sich nicht mit anderen Diensten beißt.
Was ein Container ist
Ein Container ist eine abgeschlossene Umgebung die alles mitbringt was eine Anwendung zum Laufen braucht: den Code, die Laufzeitumgebung, Bibliotheken und Konfiguration. Er läuft isoliert vom Rest des Systems.
Der Unterschied zu einer virtuellen Maschine: Container teilen sich den Kernel des Host-Systems und sind dadurch viel leichter und schneller. Ein Container startet in Sekunden und braucht nur die Ressourcen die die Anwendung selbst braucht.
Stell dir einen Container wie eine Transportbox vor. Alles was die Anwendung braucht ist darin verpackt. Du kannst die Box auf jedem System öffnen und der Inhalt verhält sich immer gleich, egal ob auf deinem Laptop, einem vServer oder einem anderen Rechner.
Docker installieren
Auf Ubuntu und Linux Mint installierst du Docker am saubersten über das offizielle Skript:
Nach dem zweiten Befehl musst du dich ab- und wieder anmelden. Danach kannst du Docker ohne sudo verwenden.
Die wichtigsten Docker-Befehle
docker ps -a auch gestoppte Container anzeigen.
-f live verfolgen.
Docker Compose: mehrere Container verwalten
Für komplexere Setups mit mehreren Containern die zusammenarbeiten gibt es Docker Compose. Statt langen docker run Befehlen schreibt man eine compose.yml Datei.
Beispiel für n8n:
Mit docker compose up -d im selben Ordner startet der Dienst. Mit docker compose down stoppt er. Das -d steht für "detached", also im Hintergrund.
Daten persistent speichern
Container sind von Natur aus flüchtig: wenn du einen Container löschst, sind die Daten darin weg. Damit Daten erhalten bleiben, verwendet man Volumes oder Bind Mounts.
Bind Mounts sind einfacher zu verstehen: du siehst die Daten direkt im Dateisystem. Named Volumes liegen unter /var/lib/docker/volumes/ und werden von Docker verwaltet.
Lege für jeden Dienst einen eigenen Ordner an und speichere die compose.yml darin. So hast du alle Konfigurationen an einem Ort, kannst Updates mit docker compose pull && docker compose up -d einspielen und weißt immer wo welche Einstellungen stehen.
Häufige Fragen
Warum Docker fürs Selfhosting?
Docker trennt Dienste sauber, macht Setups wiederholbar und reduziert Installationschaos auf dem Host.
Was gehört in eine Compose-Datei?
Dienste, Images, Ports, Volumes, Netzwerke und Umgebungsvariablen, die dein Setup nachvollziehbar machen.
Warum sind Volumes kritisch?
Dort liegen Daten, Konfigurationen und Uploads. Ohne saubere Volumes werden Updates und Backups riskant.