Container und Container Orchestrierung: Ein Kurzüberblick

Für das Packaging und das Laufenlassen von Cloud Native Applications sind Container das zentrale Konzept: Microservices werden in Container Images gepackt und auf einem Container Host ausgeführt.
Ein Container Image ist ein Binary, welches den Code, die Abhängigkeiten und die Runtime bündelt – sprich alles was es braucht, um den Microservice laufen zu lassen.
Ein Container ist ein laufender Prozess, welcher aus einem Container Image erstellt wird. Der Prozess läuft isoliert vom Host Operating System und anderen Prozessen auf dem System.
Microservices oder allgemein Applikationen in Container sind portabel über verschiedene (Cloud) Umgebungen. Gegenüber virtuellen Maschinen sind Container viel leichtgewichtiger und nutzen die zur Verfügung stehenden Ressourcen besser aus.
Docker ist eine Plattform, um containerized Applikationen zu erstellen und laufenzulassen. Aus Docker entstand die Container Runtime containerd, welche das Container Runtime Interface implementiert.
Die Containerization (Verpacken von Applikationen in Container) und das Laufenlassen von Container mittels einer Container Engine ist nur der ein Teil vom Development Lifecycle. Der andere Teil besteht aus dem Management der Container Ausführung und dem Life Cycle der Container. Ein Beispiel ist das neu starten eines Containers, dessen Runtime Fehler wirft. Hier kommt die Container Orchestrierung ins Spiel.

In der Cloud Native Landscape hat sich Kubernetes als de facto Standard für Container Orchestrierung durchgesetzt. Werden real-world Cloud Native Applikationen betrieben, ist es fast unmöglich, die Container manuell zu managen. Deshalb ist eine Container Orchestrierung wie es Kubernetes bietet ein zentraler Bestandteil einer Cloud Native Architektur.
Quelle: https://www.oreilly.com/library/view/design-patterns-for/9781492090700/