Containerisierung
- Technologie zur isolierten Verpackung von Anwendungen und deren Abhängigkeiten in Containern
Container
- leichtgewichtige, portierbare und unabhängige Umgebung, in der Anwendung ausgeführt wird
- teilt denselben Kernel mit dem Host-Betriebssystem
Eigenschaften
Leichtgewichtig
- benötigen nur minimale Systemressourcen (viel weniger als VMs), da sie kein eigenes Betriebssystem benötigen
Portabel
- enthält alle Abhängigkeiten einer Anwendung
- Programm kann auf jedem System laufen, das von der Container-Engine unterstützt wird
- kann unabhängig vom Betriebssystem ausgeführt werden
Isoliert
-
jeder Container läuft isoliert von anderen Containern und vom Host-Betriebssystem
→ Verbesserung der Sicherheit und Verhinderung von gegenseitigen Einflüssen zwischen Anwendungen
Verwendung
- in Microservices-Architekturen und Cloud-Native-Anwendungen
- effiziente Verwaltung und Skalierung von Anwendungen mit Orchestrierungstools (wie Kubernetes)
- in DevOps CI/CD-Pipelines
Container vs. Virtualisierung
VM
- virtuelle Maschine
- Simulierung eines gesamten physischen Systems mit Betriebssystem
- benötigt sehr viel Leistung
Container
- Anwendung mit allen Abhängigkeiten
- sehr effizient: Anwendung läuft direkt auf Kernel des Betriebssystems und agiert mit diesem
- kleiner und schneller
Vorteile Container gegenüber VMs
- schnelle Startzeit
- einfachere Verwaltung
- geringerer Ressourcenverbrauch (direkte Nutzung des Kernels)
- höhere Dichte (auf einzigem Host können mehrere Container laufen)
Orchestrierung
- Container werden meistens in der Cloud betrieben → Ziel ist deshalb die horizontale Skalierung
- wenn Applikation mehr Ressourcen benötigt → diesem Service wird dann einfach ein weiterer Container hinzugefügt
- sinnvoller Einsatz: Verteilung der Last auf mehrere Computer (Nodes)
- bei Docker: Docker Swarm