Container & Docker#
Container sind eine leichtgewichtige Virtualisierungsmethode, bei der Anwendungen mit allen ihren Abhängigkeiten in isolierten Umgebungen auf einem gemeinsamen Betriebssystem-Kernel laufen.
1. Grundprinzip#
┌──────────────────────────────────────────┐
│ Container A │ Container B │ Container C │
│ App + Libs │ App + Libs │ App + Libs │
├──────────────────────────────────────────┤
│ Container-Runtime (Docker) │
├──────────────────────────────────────────┤
│ Host-Betriebssystem │
├──────────────────────────────────────────┤
│ Hardware │
└──────────────────────────────────────────┘Container teilen sich den Host-OS-Kernel, aber sind voneinander isoliert. Sie enthalten keine eigenes Betriebssystem (nur Bibliotheken + Anwendung).
2. Wichtige Begriffe#
| Begriff | Bedeutung |
|---|---|
| Image | Unveränderliche Vorlage für einen Container (wie eine ISO-Datei) |
| Container | Laufende Instanz eines Images |
| Dockerfile | Textdatei mit Bauanleitung für ein Image |
| Registry | Zentrales Repository für Images (z.B. Docker Hub) |
| Volume | Persistenter Speicher für Containerdaten |
| Port-Mapping | Weiterleitung von Host-Port an Container-Port |
| Namespace | Linux-Kernel-Feature für Isolation (Prozesse, Netz, Dateisystem) |
| cgroup | Ressourcenbegrenzung (CPU, RAM) für Container |
3. Docker — wichtigste Befehle (Überblick)#
| Befehl | Beschreibung |
|---|---|
docker pull nginx | Image aus Registry herunterladen |
docker run nginx | Container aus Image starten |
docker ps | Laufende Container anzeigen |
docker ps -a | Alle Container (auch gestoppte) |
docker stop <ID> | Container stoppen |
docker rm <ID> | Container löschen |
docker images | Alle lokalen Images |
docker rmi <ID> | Image löschen |
docker build -t name . | Image aus Dockerfile bauen |
4. Container vs. Virtuelle Maschine (VM)#
| Merkmal | Container | VM (Hypervisor) |
|---|---|---|
| Gast-OS | Nein (teilt Host-Kernel) | Ja (eigenes OS) |
| Startzeit | Sekunden | Minuten |
| Größe | Megabytes | Gigabytes |
| Ressourcenverbrauch | Sehr gering | Hoch |
| Isolation | Prozess-Isolation | Vollständige OS-Isolation |
| Sicherheit | Schwächer (shared kernel) | Stärker |
| Einsatz | Microservices, CI/CD | Vollständige Systemvirt. |
5. Microservices & Container#
Container sind ideal für Microservice-Architekturen: Jede Anwendungsfunktion läuft als eigener Container.
flowchart LR
subgraph Monolith
M[Gesamte Anwendung\nin einem Prozess]
end
subgraph Microservices mit Containern
A[Container:\nAuthentifizierung]
B[Container:\nDatenbank]
C[Container:\nWebserver]
D[Container:\nAPI-Gateway]
endVorteile:
- Einzelne Services können unabhängig aktualisiert werden
- Skalierung einzelner Komponenten möglich
- Fehler in einem Container beeinflussen andere nicht
6. Container-Orchestrierung#
Bei vielen Containern wird ein Orchestrierungssystem benötigt:
| Tool | Beschreibung |
|---|---|
| Docker Compose | Mehrere Container mit einer Konfigurationsdatei (yaml) starten |
| Kubernetes (K8s) | Verwaltung, Skalierung und Hochverfügbarkeit vieler Container |
| Docker Swarm | Einfachere Alternative zu Kubernetes von Docker |
7. Vor- und Nachteile von Containern#
| Vorteile | Nachteile |
|---|---|
| Schnell gestartet und gestoppt | Schwächere Isolation als VMs |
| Ressourceneffizient | Shared Kernel = Sicherheitsrisiko |
| Portabel: läuft überall gleich | Stateful Anwendungen komplexer |
| Einfache Skalierung | Lernkurve für Orchestrierung |
| DevOps & CI/CD-freundlich | Persistenz muss separat gelöst werden |
Wichtige Hinweise für die Prüfung#
- Container = kein eigenes OS, teilen Host-Kernel
- VM = eigenes Gast-OS, stärkere Isolation
- Image = Vorlage (unveränderlich), Container = laufende Instanz
- Docker ist die bekannteste Container-Laufzeitumgebung
- Kubernetes = Orchestrierung vieler Container im Produktivbetrieb
Prüfungsbeispiele#
„Warum starten Container in Sekunden, während virtuelle Maschinen mehrere Minuten zum Booten brauchen?"
→ Container haben kein eigenes Betriebssystem — sie teilen sich den Host-Kernel und müssen nur die Anwendung selbst starten. Eine VM muss ein komplettes Gast-Betriebssystem hochfahren.
„Was ist der Unterschied zwischen einem Docker-Image und einem Container?"
→ Das Image ist die unveränderliche Vorlage (vergleichbar mit einer ISO-Datei), der Container ist eine laufende Instanz dieses Images. Aus einem Image können beliebig viele Container gleichzeitig gestartet werden.
„Ein Unternehmen betreibt 50 Container und möchte sie automatisch skalieren und bei Ausfall neu starten lassen. Welches Werkzeug wird benötigt?"
→ Ein Orchestrierungssystem wie Kubernetes (K8s) — es übernimmt Skalierung, Hochverfügbarkeit und automatischen Neustart ausgefallener Container.
Quiz#
❓ Warum starten Container deutlich schneller als virtuelle Maschinen?
❓ Was ist der Unterschied zwischen einem Docker-Image und einem Container?
❓ Welche Linux-Kernel-Features ermöglichen die Isolation von Containern?
❓ Ein Unternehmen betreibt 50 Container und will sie automatisch skalieren und bei Ausfall neu starten lassen. Welches Werkzeug wird benötigt?
Siehe auch#
- hypervisor — Vergleich: Hypervisor-VMs vs. Container
- cloud — Container als Baustein moderner Cloud-Architekturen
- backup strategien — Datensicherung bei containerisierten Anwendungen