Zum Hauptinhalt springen

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