Docker: Containerisierung deiner ersten App

Willkommen zu diesem Einstieg in die Welt von Docker! Wenn du dich fragst, was es mit Containern auf sich hat, wie man eine Anwendung „dockerisiert“ oder wie man seine App plattformunabhängig macht – bist du hier genau richtig.

Docker erste App

📦 Was ist Docker?

Docker ist eine Open-Source-Plattform, die es ermöglicht, Anwendungen und alle ihre Abhängigkeiten in sogenannten Containern zu verpacken. Diese Container sind leichtgewichtig, portabel und isoliert – ideal für Entwicklung, Testing und Deployment.

Denk an Container wie kleine virtuelle Maschinen, nur viel effizienter.


🔧 Vorbereitung: Docker installieren

Je nach Betriebssystem:

sudo apt update
sudo apt install docker.io
sudo systemctl enable --now docker

Überprüfe die Installation:

docker --version

🛠️ Dein erstes Projekt: Eine einfache Web-App mit Flask

📁 Projektstruktur

myapp/
├── Dockerfile
├── app.py
└── requirements.txt

app.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
def home():
    return "Hallo aus Docker!"

if __name__ == "__main__":
    app.run(debug=True, host="0.0.0.0", port=5000)

requirements.txt

flask

Dockerfile

FROM python:3.10-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .

CMD ["python", "app.py"]

🚀 Builden & Starten

docker build -t meine-app .
docker run -p 5000:5000 meine-app

Jetzt kannst du deine App unter http://localhost:5000 aufrufen. Glückwunsch, dein erster Container läuft!


📂 Nächste Schritte

  • Einführung in Docker Compose
  • Arbeiten mit Volumes für persistente Daten
  • Netzwerke zwischen Containern einrichten
  • Integration mit CI/CD-Pipelines

⚖️ Load Balancing & Auto-Scaling: Performance trifft Flexibilität

In modernen, hochverfügbaren Cloud-Architekturen sind Load Balancer und Auto-Scaler zentrale Bestandteile. Sie sorgen dafür, dass deine Anwendungen nicht nur zuverlässig, sondern auch effizient auf wechselnde Lasten reagieren.


🧠 Was ist Load Balancing?

Load Balancing (Lastverteilung) beschreibt die Verteilung eingehender Anfragen auf mehrere Server, um:

  • Ressourcen optimal zu nutzen
  • Engpässe zu vermeiden
  • Ausfallsicherheit zu erhöhen

🔄 Beispiel:

Statt dass 100.000 Nutzer:innen auf einen einzigen Server zugreifen, verteilt ein Load Balancer die Anfragen auf mehrere Instanzen – etwa fünf Backend-Container.


🏗️ Arten von Load Balancern

TypBeschreibung
Layer 4 (Transport)Arbeitet auf TCP/UDP-Ebene (z. B. NGINX TCP Load Balancer)
Layer 7 (Application)Erkennt Protokolle wie HTTP/S und kann gezielt Anfragen weiterleiten (z. B. nach Pfad oder Header)

Bekannte Tools:

  • NGINX / HAProxy (Open Source)
  • Traefik (dynamisch, perfekt für Docker/Kubernetes)
  • Cloud Load Balancer (AWS, GCP, Azure)

⚙️ Wie funktioniert Auto-Scaling?

Auto-Scaling bedeutet, dass deine Anwendung bei Bedarf automatisch:

  • hochskaliert (mehr Instanzen bei hoher Last)
  • herunterskaliert (weniger Instanzen bei geringer Last)

🔍 Kriterien für Auto-Scaling:

  • CPU-/RAM-Auslastung
  • Anzahl gleichzeitiger Verbindungen
  • Warteschlangenlängen (z. B. bei Queues)

☁️ Auto-Scaling in der Cloud

Die meisten Cloud-Anbieter bieten automatische Skalierungsdienste an:

AnbieterDienst
AWSAuto Scaling Groups, ECS Fargate
GCPInstance Groups, Cloud Run
AzureVM Scale Sets, Azure App Services
KubernetesHorizontal Pod Autoscaler (HPA)

🐳 Load Balancing + Auto-Scaling in Docker-Umgebungen

Szenario: Du hast eine Web-App in Docker-Containern laufen und willst sie horizontal skalieren.

  1. Mehrere Container deiner App starten:
docker run -d -p 5001:5000 meine-app
docker run -d -p 5002:5000 meine-app
docker run -d -p 5003:5000 meine-app

NGINX als Load Balancer einrichten:

http {
  upstream backend {
    server localhost:5001;
    server localhost:5002;
    server localhost:5003;
  }

  server {
    listen 80;
    location / {
      proxy_pass http://backend;
    }
  }
}

Mit Docker Compose skalieren:

services:
  web:
    build: .
    ports:
      - "80:5000"
    deploy:
      replicas: 3

Mit docker compose up --scale web=3 startest du 3 Instanzen deiner App.


📈 Best Practices

  • Health Checks einrichten, damit nur gesunde Instanzen Anfragen erhalten.
  • Sticky Sessions vermeiden (außer erforderlich), um besser skalieren zu können.
  • Load Balancer selbst redundant betreiben oder managed Dienste nutzen.
  • Monitoring & Alerting mit Tools wie Prometheus, Grafana, Datadog.

🎯 Fazit

Load Balancing und Auto-Scaling sind essenziell für moderne Web-Anwendungen und Microservice-Architekturen. Sie ermöglichen nicht nur eine bessere Performance und Verfügbarkeit, sondern auch eine kosteneffiziente Nutzung von Ressourcen. In Kombination mit Container-Technologien wie Docker oder Kubernetes eröffnen sich enorme Möglichkeiten für dynamische, selbstheilende Systeme.

Links

Docker Übersicht

Docker Hauptseite

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert