SaaS & Hosting
Docker und Kubernetes erklärt – Wenn Infrastruktur zum Code wird
Nico FreitagSaaS & Hosting
Docker und Kubernetes haben die Infrastruktur revolutioniert. Mit ihnen kannst du Apps konsistent deployen, egal ob auf deinem Laptop oder auf einem Produktions-Server. Aber die Konzepte sind komplex. Wir machen sie einfach.
Das Problem ohne Docker
Früher war das Problem: "It works on my machine."
Developer programmiert auf seinem Laptop mit Python 3.8, MySQL 5.7. Der Code funktioniert.
Der Code geht auf den Production Server mit Python 3.6, MySQL 5.5. Der Code läuft nicht mehr.
Warum? Die Umgebungen sind unterschiedlich.
Die Lösung: Docker (Containers)
Docker erstellt einen "Container" – ein isoliertes Environment mit allem was die App braucht:
- Python 3.8
- MySQL 5.7
- All dependencies
- Konfiguration
Dieser Container funktioniert auf jedem System (Laptop, Server, Cloud).
Analogie: Docker ist wie ein Schiff-Container. Der Container ist sealed. Egal wo der Container hingehen – der Inhalt ist geschützt.
Wie funktioniert Docker?
```dockerfile
# Dockerfile – Description wie Container gebaut wird
FROM python:3.8
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]
```
Mit diesem Dockerfile:
```bash
docker build -t my-app:1.0 .
docker run -p 5000:5000 my-app:1.0
```
Jetzt läuft deine App in einem Container.
Docker Häufige Begriffe
Image: Die Blueprint für den Container (wie eine Klasse in OOP)
Container: Ein laufender Instance einer Image (wie ein Object in OOP)
Registry: Ein Ort wo Images gespeichert sind (Docker Hub, etc.)
```
Image -> Container (like Class -> Object)
```
Das Problem mit Docker Allein
Docker läuft auf einen Server gut. Aber was wenn der Server ausfällt? Deine App ist offline.
Du brauchst mehrere Container auf mehreren Servern. Aber wer managt das?
- Welcher Container läuft wo?
- Welcher ist down und muss restart?
- Wie load-balanciert man Requests?
Das ist wo Kubernetes kommt.
Kubernetes (Orchestration)
Kubernetes ist ein System das Container auf mehreren Servern (Cluster) managt.
```
Kubernetes Cluster:
- Server 1: Container A, Container B
- Server 2: Container C
- Server 3: Container D, Container E
Kubernetes sagt:
- Container C ist down -> Restart ihn auf Server 1
- Es kommen mehr Requests -> Scale zu 10 Container
- Load Balance zwischen den 10 Containern
```
Kubernetes Concepts
Pod: Die kleinste Unit in Kubernetes. Usually 1 Container per Pod.
Deployment: Beschreibung wie viele Pods du willst, wie du updaten willst
Service: Load Balancer zwischen Pods
Cluster: Viele Nodes (Server) zusammen
```yaml
# Deployment – "Ich will 3 Pods von meiner App"
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3 # 3 Pods
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: app
image: my-app:1.0
ports:
- containerPort: 5000
```
Praktisches Beispiel
Deine Website wird gehackt, der Server läuft lagerlos.
Mit Docker + Kubernetes:
```bash
# Dein aktueller Deployment hat 5 Pods
kubectl scale deployment my-app --replicas=10
# Kubernetes startet sofort 5 neue Pods auf verschiedene Nodes
# Das ist 2x die Kapazität
```
Deine Website läuft wieder normal. Alles in 30 Sekunden.
Wann brauchst du Docker/Kubernetes?
Brauch Docker wenn:
- Deine App hat komplexe Dependencies
- Du willst konsistent über Entwicklung -> Production
Brauch Kubernetes wenn:
- Deine App hat viele Nutzer (Skalierung)
- Du willst High Availability (mehrere Server)
- Du willst Automation von Deployments
Für Anfänger: Docker allein ist oft genug. Kubernetes später.
Managed Services
Selbst Kubernetes zu managen ist hard (viele Konfiguration). Stattdessen:
- AWS ECS: AWS's Container Orchestration
- Google Cloud Run: Simple Container Hosting
- Vercel: Für Next.js/Frontend
- Heroku: Simple Deployment
- DigitalOcean App Platform: Einfacher als Kubernetes
Für kleine Apps: Managed Services sind besser als selbst Kubernetes.
Fazit
Docker und Kubernetes haben Infrastructure-Handling vereinfacht. Für moderne Apps sind sie Standard. Aber für Anfänger: Fang mit Docker an (um deine App zu containerize). Scale zu Kubernetes wenn du es brauchst.
FAQ
Related Articles
SaaS & Hosting
SaaS bauen – Der Weg von Idee zum zahlenden Kunden
SaaS (Software-as-a-Service) Unternehmen zu gründen ist anders als Software zu bauen. Du musst nicht nur Software bauen ...
SaaS & HostingMulti-Tenant vs. Single-Tenant – Die richtige SaaS-Architektur
Wenn du ein SaaS baust, brauchst du zu entscheiden: Multi-Tenant oder Single-Tenant? Das beeinflusst alles: Sicherheit,...