„Works on my machine!" – ein Satz, der in jedem Entwicklerteam für Frustration sorgt. Docker macht ihn obsolet. Container garantieren, dass deine Anwendung überall gleich läuft: auf dem Laptop, im CI/CD und in der Produktion.
Was ist ein Container?
Ein Container ist ein isolierter Prozess mit allem was er braucht: Code, Runtime, Libraries, Konfiguration. Er läuft auf dem Host-Betriebssystem, teilt aber den Kernel. Das macht ihn leichter als eine VM – kein komplettes OS nötig.
Images und Container: Der Unterschied
- Image – die Vorlage. Unveränderlich, versioniert, in Registry gespeichert
- Container – eine laufende Instanz eines Images. Kann erstellt, gestartet, gestoppt, gelöscht werden
Ein Image = die Klasse. Ein Container = das Objekt (die Instanz).
Das erste Dockerfile
Ein Dockerfile beschreibt wie ein Image gebaut wird – Schicht für Schicht:
# Basis-Image
FROM python:3.12-slim
# Arbeitsverzeichnis
WORKDIR /app
# Dependencies zuerst (besseres Caching)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# App-Code kopieren
COPY . .
# Port freigeben
EXPOSE 8000
# Startbefehl
CMD ["uvicorn", "main:app", "--host", "0.0.0.0"]
Die wichtigsten Docker-Befehle
docker build -t meinapp .– Image aus Dockerfile bauendocker run -p 8000:8000 meinapp– Container startendocker ps– laufende Container anzeigendocker logs meinapp– Container-Logs anzeigendocker exec -it meinapp bash– in Container einloggen
Docker Compose: Mehrere Services zusammen
Eine Web-App besteht meistens aus mehreren Services: App-Server, Datenbank, Cache. Docker Compose startet sie alle mit einem Befehl:
services:
app:
build: .
ports: ["8000:8000"]
depends_on: [db]
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: secret
Dann einfach: docker compose up
Best Practices
- Slim Base-Images nutzen (python:slim, alpine) – kleinere Images
- Layer-Reihenfolge beachten – was sich selten ändert zuerst (besseres Caching)
- .dockerignore nutzen – node_modules, .git nicht ins Image kopieren
- Non-Root User im Container laufen lassen (Sicherheit)
- Multi-Stage Builds – Build-Stage vs. Runtime-Stage trennen
Fazit
Docker ist heute Standard in der professionellen Softwareentwicklung. Einmal in Docker containerisiert, läuft deine App überall – lokal, in CI/CD, auf jedem Cloud-Anbieter. Wir dockerisieren bestehende Anwendungen und richten vollständige Container-Infrastrukturen ein.
Ihr Projekt umsetzen?
Wir setzen genau das um, was in diesem Artikel beschrieben wird – für Ihr Unternehmen, individuell und zuverlässig.
Kostenlos anfragen →