Docker Kubernetes Container Orchestrierung

Docker vs. Kubernetes für Heimanwender: Welche Container-Plattform passt ins Homelab?

Docker vs. Kubernetes für Heimanwender – welche Container-Plattform ist die richtige für dein Homelab? Beide Technologien haben ihre Berechtigung, aber sie lösen unterschiedliche Probleme. In diesem Artikel vergleiche ich Docker und Kubernetes im Heimanwender-Kontext und helfe dir, die richtige Wahl zu treffen.

Was ist Docker?

Docker ist eine Containerisierungsplattform, die es ermöglicht, Anwendungen zusammen mit all ihren Abhängigkeiten in sogenannten „Containern“ zu verpacken und auszuführen. Ein Docker-Container ist isoliert vom Host-System, startet in Sekunden und läuft überall gleich – egal ob auf deinem Laptop oder auf einem Server.

Docker Compose erweitert Docker um die Möglichkeit, mehrere Container als „Service Stack“ gemeinsam zu definieren und zu starten. Eine einfache YAML-Datei beschreibt den gesamten Stack.

Was ist Kubernetes?

Kubernetes (kurz: K8s) ist ein Container-Orchestrierungssystem – es verwaltet Container über mehrere Hosts (Nodes) hinweg. Kubernetes kümmert sich um Lastverteilung, automatisches Neustarten abgestürzter Container, Rolling Updates und vieles mehr.

Kubernetes wurde ursprünglich von Google entwickelt und ist heute der Standard für Container-Orchestrierung im Enterprise-Bereich.

Der direkte Vergleich: Docker vs. Kubernetes

Kriterium Docker (Compose) Kubernetes
Einstiegshürde Niedrig Hoch
Komplexität Gering Sehr hoch
Ressourcenbedarf Minimal Mindestens 4 GB RAM für Cluster
Skalierung Manuell / begrenzt Automatisch, horizontal
Hochverfügbarkeit Begrenzt (Swarm) Ja, nativ
Lernkurve Flach Steil
Für Heimlabor geeignet? Sehr gut Mit Einschränkungen

Wann Docker die richtige Wahl ist

Für die meisten Heimanwender ist Docker die richtige Wahl. Verwende Docker wenn:

  • Du Dienste wie Nextcloud, Vaultwarden, Pi-hole oder Plex betreiben möchtest
  • Du einen oder wenige Server hast
  • Einfachheit und schnelle Ergebnisse wichtiger sind als Skalierbarkeit
  • Du eine flache Lernkurve bevorzugst
  • Dein Server weniger als 8 GB RAM hat
# Nextcloud mit Docker Compose starten
docker compose up -d

# Container-Status anzeigen
docker compose ps

# Logs anzeigen
docker compose logs -f

Wann Kubernetes sinnvoll ist

Kubernetes lohnt sich im Homelab wenn:

  • Du K8s für den Beruf lernen möchtest (sehr nützlich für DevOps/SRE-Karrieren)
  • Du mehrere physische Hosts in einem Cluster betreiben möchtest
  • Du Hochverfügbarkeit benötigst
  • Du fortgeschrittene Deployment-Strategien wie Rolling Updates ausprobieren möchtest

Kubernetes im Homelab: K3s als leichtgewichtige Alternative

Falls du Kubernetes im Homelab ausprobieren möchtest, empfehle ich K3s – eine zertifizierte, leichtgewichtige Kubernetes-Distribution von Rancher:

# K3s auf dem Master-Node installieren
curl -sfL https://get.k3s.io | sh -

# Status prüfen
sudo k3s kubectl get nodes

K3s benötigt nur 512 MB RAM für den Server-Node und läuft auch auf einem Raspberry Pi. Es eignet sich hervorragend zum Lernen, ohne dass du einen vollständigen K8s-Cluster mit mehreren Nodes aufbauen musst.

Helm: Kubernetes-Pakete einfach installieren

Helm ist der Paket-Manager für Kubernetes – ähnlich wie apt für Debian oder pip für Python. Mit Helm installierst du komplexe Anwendungen in wenigen Befehlen:

# Helm installieren
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

# Nextcloud via Helm installieren
helm repo add nextcloud https://nextcloud.github.io/helm/
helm install nextcloud nextcloud/nextcloud

Meine Empfehlung für das Homelab

Für Einsteiger und die meisten Self-Hosting-Szenarien: Docker + Docker Compose. Es ist einfacher, gut dokumentiert, ressourcenschonend und für alle typischen Heimserver-Dienste vollkommen ausreichend.

Für alle, die Kubernetes im Beruf nutzen oder lernen möchten: K3s auf einem Raspberry Pi oder einer kleinen VM. Das ist der beste Weg, echte K8s-Erfahrung zu sammeln, ohne Enterprise-Hardware zu benötigen.

Docker vs. Kubernetes: Praktische Entscheidungshilfe

Die Frage „Docker vs. Kubernetes“ lässt sich am besten anhand konkreter Szenarien beantworten:

Szenarien für Docker Compose

  • Du willst Nextcloud, Vaultwarden und Pi-hole auf einem einzigen Server betreiben → Docker Compose
  • Du hast weniger als 8 GB RAM und keine Hochverfügbarkeitsanforderungen → Docker
  • Du willst schnell starten und sichtbare Ergebnisse erzielen → Docker

Szenarien für Kubernetes (K3s)

  • Du bereitest dich auf eine DevOps-Stelle vor und brauchst praktische K8s-Erfahrung → K3s
  • Du betreibst mehrere physische Nodes und willst automatische Ausfallsicherheit → K3s-Cluster
  • Du willst Rolling Updates ohne Downtime → Kubernetes

Migration von Docker zu Kubernetes

Du kannst später immer migrieren. Docker Compose-Dateien lassen sich mit Tools wie kompose in Kubernetes-Manifeste konvertieren:

kompose convert -f docker-compose.yml

Das Ergebnis sind Kubernetes Deployment- und Service-YAMLs, die direkt mit kubectl apply deployed werden können.

Helm Charts: Der Paketmanager für Kubernetes

Helm ist das bekannteste Paketverwaltungswerkzeug für Kubernetes und wird oft als “apt für Kubernetes” bezeichnet. Anstatt dutzende YAML-Dateien manuell zu pflegen, bündelt ein Helm Chart alle notwendigen Kubernetes-Ressourcen – Deployments, Services, ConfigMaps, Ingress-Regeln – in einem wiederverwendbaren Paket.

Wie funktioniert Helm?

Ein Helm Chart besteht aus einer Verzeichnisstruktur mit Templates und einer zentralen values.yaml-Datei. Die Templates verwenden die Go-Template-Syntax, sodass alle konfigurierbaren Parameter in der values.yaml überschrieben werden können. Typische Helm-Befehle sind:

# Chart aus Repository installieren
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install mein-redis bitnami/redis --set auth.password=geheim123

# Installierte Releases auflisten
helm list -A

# Release aktualisieren
helm upgrade mein-redis bitnami/redis --set auth.password=neuesPasswort

# Release deinstallieren
helm uninstall mein-redis

Für das Homelab sind öffentliche Chart-Repositories wie Bitnami, Artifact Hub oder die offiziellen Charts einzelner Projekte (Prometheus, Grafana, Nextcloud) besonders nützlich. Statt einer stundenlangen Konfiguration ist eine Applikation oft mit drei Befehlen deployt.

GitOps mit ArgoCD und Flux

GitOps ist ein Betriebsmodell, bei dem ein Git-Repository die einzige Quelle der Wahrheit für den Zustand eines Clusters darstellt. Jede Konfigurationsänderung wird als Git-Commit ausgeführt – der Cluster gleicht seinen Zustand automatisch mit dem Repository ab.

ArgoCD vs. Flux

Die beiden populärsten GitOps-Werkzeuge unterscheiden sich in ihrer Philosophie:

  • ArgoCD bietet eine übersichtliche Web-UI, in der der Zustand aller Applikationen auf einen Blick sichtbar ist. Es eignet sich hervorragend für Einsteiger, da Sync-Konflikte und Health-Status sofort visualisiert werden.
  • Flux ist schlanker und CLI-orientiert. Es läuft komplett im Cluster ohne externe UI (Grafana-Dashboards optional) und folgt dem Kubernetes-nativen Prinzip strikter. Flux v2 unterstützt außerdem OCI-Registries als Quell-Repositories.

Im Homelab empfiehlt sich ArgoCD für den Einstieg wegen der intuitiven Oberfläche. Ein typisches Setup für K3s sieht so aus:

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl port-forward svc/argocd-server -n argocd 8080:443

Anschließend werden Applikations-Definitionen als YAML im Git-Repo hinterlegt. ArgoCD überwacht das Repository und deployt Änderungen automatisch – ein neues Helm-Chart-Release oder eine aktualisierte Konfiguration wird binnen Minuten im Cluster wirksam.

Entscheidungsmatrix: Docker oder Kubernetes?

Die Wahl zwischen Docker Compose und Kubernetes hängt von mehreren Faktoren ab. Die folgende Matrix hilft bei der Entscheidung:

  • Anzahl der Dienste < 10, ein Host: Docker Compose – einfacher, schneller, weniger Overhead
  • Mehrere Hosts, Hochverfügbarkeit gewünscht: Kubernetes (K3s) mit mindestens 3 Nodes
  • Lernzweck, Zertifizierungsvorbereitung (CKA/CKAD): Kubernetes im Homelab, idealerweise mit kubeadm oder K3s
  • Produktiver NAS-Betrieb, Medienserver: Docker Compose – stabiler und ressourcenschonender
  • CI/CD-Pipeline mit automatischen Deployments: Kubernetes mit ArgoCD/Flux und Helm
  • Edge-Computing, IoT-Gateways: K3s oder MicroK8s auf Raspberry Pi
  • Datenbank-Cluster (MySQL, PostgreSQL): Docker Compose oder Bare-Metal – StatefulSets in Kubernetes sind komplex

Als Faustregel gilt: Solange du auf einem einzelnen Host arbeitest und keine automatische Neustartlogik über Nodes hinweg benötigst, ist Docker Compose die pragmatischere Wahl. Kubernetes entfaltet seinen vollen Nutzen erst ab mehreren Nodes und dem Wunsch nach deklarativen, selbstheilenden Deployments.

Container-Sicherheit: Best Practices für Docker und Kubernetes

Egal ob Docker oder Kubernetes – Container-Sicherheit ist ein Thema, das von Anfang an mitgedacht werden muss. Hier sind die wichtigsten Grundregeln, die im Homelab wie auch in der Produktion gelten:

  • Rootless Container: Container sollten niemals als Root-User laufen. In Docker: user: "1000:1000" in der Compose-Datei. In Kubernetes: securityContext.runAsNonRoot: true im Pod-Spec.
  • Read-Only-Filesystems: Wenn eine Applikation keine Schreibrechte auf das Dateisystem benötigt, sollte es als read-only gemountet werden. Reduziert die Wirkung von Kompromittierungen erheblich.
  • Image-Scanning: Tools wie Trivy oder Grype scannen Docker-Images auf bekannte CVEs. Im CI/CD-Prozess lassen sie sich automatisch integrieren.
  • Minimale Base-Images: Alpine Linux oder Distroless-Images haben eine deutlich kleinere Angriffsfläche als Ubuntu- oder Debian-basierte Images. Weniger Pakete bedeuten weniger potenzielle Schwachstellen.
  • Kubernetes NetworkPolicies: Standardmäßig kann jeder Pod jeden anderen Pod im Cluster erreichen. NetworkPolicies schränken diese Kommunikation auf das Nötigste ein – ähnlich wie Firewall-Regeln zwischen VLANs.

Im Homelab-Kontext empfiehlt sich der Einstieg mit Trivy: trivy image nginx:latest zeigt in Sekunden, welche bekannten Schwachstellen ein Image enthält und wie kritisch sie sind.

Fazit

Docker und Kubernetes sind keine Konkurrenten, sondern Werkzeuge für unterschiedliche Aufgaben. Im Homelab sind beide wertvoll – Docker für den produktiven Betrieb, Kubernetes für das Lernen. Fange mit Docker an, lerne die Grundlagen der Containerisierung, und steige dann bei Interesse auf K3s um.

Ähnliche Beiträge