Container
Container sind standardisierte, leichtgewichtige Laufzeitumgebungen, die Anwendungen und ihre Abhängigkeiten paketieren, isolieren und portabel über Umgebungen betreiben.
Klassifikation
- KomplexitätMittel
- AuswirkungTechnisch
- EntscheidungstypArchitektur
- OrganisationsreifeFortgeschritten
Technischer Kontext
Prinzipien & Ziele
Use Cases & Szenarien
Kompromisse
- Unsichere Images führen zu Einfallstoren
- Fehlende Orchestrierung erhöht Betriebsaufwand
- Ressourcen-Overcommit kann Stabilität gefährden
- Verwenden Sie kleine, fokussierte Images und Multi-Stage-Builds
- Signieren und Scannen Sie Images vor dem Deployment
- Definieren Sie Ressourcenlimits und Health-Probes
I/O & Ressourcen
- Anwendungscode und Build-Anweisungen (z. B. Dockerfile)
- Container-Registry für Image-Verteilung
- Laufzeitumgebung / Container Runtime
- Versionierte Container-Images
- Deployment-Manifeste (z. B. Kubernetes YAML)
- Laufende Container-Instanzen
Beschreibung
Container sind leichtgewichtige, isolierte Laufzeitumgebungen, die Anwendungen und ihre Abhängigkeiten paketieren und konsistent über Entwicklungs-, Test- und Produktionsumgebungen betreiben. Sie ermöglichen reproduzierbare Deployments, effiziente Ressourcennutzung und schnelle Skalierung, beeinflussen Architekturentscheidungen und erfordern geeignete Orchestrierung, Sicherheit und Image-Management. Bewährte Praktiken und geeignete Werkzeuge sind entscheidend für robusten Betrieb.
✔Vorteile
- Portabilität zwischen Umgebungen
- Schnellere Start- und Deployment-Zeiten
- Bessere Ressourcenausnutzung
✖Limitationen
- Kein vollständiger Kernel-Isolationsschutz wie VM
- Fehlende Standardisierung mancher Laufzeitverhalten
- Image-Größe und Build-Komplexität können steigen
Trade-offs
Metriken
- Startzeit eines Containers
Zeit vom Startbefehl bis zur Bereitschaft des Dienstes; wichtig für Skalierbarkeit und Autoscaling.
- Image-Größe
Größe des Container-Images beeinflusst Transfer- und Startzeiten sowie Registry-Speicherbedarf.
- Resourcenverbrauch pro Container
CPU- und Speicherverbrauch zur Kapazitätsplanung und Vermeidung von Übercommit.
Beispiele & Implementierungen
Microservice-Deployment bei einem E‑Commerce-Anbieter
Jedes Microservice-Team liefert Container-Images, die von einer Kubernetes-Plattform orchestriert werden; CI/CD automatisiert Builds und Sicherheitsprüfungen.
Continuous Delivery Pipeline mit Container-Builds
Container-Images werden in einer Registry versioniert, signiert und über automatisierte Tests in mehrere Umgebungen ausgerollt.
Plattform für Data-Processing-Jobs
Batch- und Streaming-Jobs laufen in isolierten Containern, was Portabilität zwischen On-Prem und Cloud erleichtert.
Implementierungsschritte
Definieren Sie minimale Base-Images und Aufbauprozesse
Automatisieren Sie Image-Builds in CI und prüfen Sie Sicherheitslücken
Legen Sie Image-Tagging, Registry-Policies und Rollback-Prozesse fest
Führen Sie Orchestrierung ein und konfigurieren Sie Ressourcenlimits
⚠️ Technische Schulden & Engpässe
Tech Debt
- Unstrukturierte Image-Hierarchie ohne Basis-Standards
- Veraltete Base-Images ohne regelmäßige Updates
- Fehlende Automatisierung für Image-Scanning und Signing
Bekannte Engpässe
Beispiele für Missbrauch
- Direktes Ausführen von Build-Tools im Produktions-Image
- Lassen vertraulicher Daten in Images verbleiben
- Manuelles Patchen laufender Container ohne Rebuild
Typische Fallen
- Annahmen über Host-Kernel-Features führen zu Laufzeitfehlern
- Unzureichende Image-Scanning-Prozesse entdecken Schwachstellen zu spät
- Fehlkonfigurierte Ressourcenlimits verursachen OOM-Fehler
Erforderliche Fähigkeiten
Drivers (Architectural Drivers)
Constraints
- • Host-Kernel-Kompatibilität
- • Richtlinien für Image-Signatur und Scanning
- • Ressourcenquoten und Limits auf Cluster-Ebene