Containerisierte Anwendungen sind Anwendungen, die in isolierten Codepaketen ausgeführt werden, die als Container bezeichnet werden. Container enthalten alle Abhängigkeiten, die eine Anwendung unter Umständen auf einem Hostbetriebssystem wie Bibliotheken, Binärdateien, Konfigurationsdateien und Frameworks in einer einzigen, schlanken ausführbaren Datei ausführen muss.
Durch die Containerisierung von Anwendungen wird die Anwendungsentwicklung schneller, effizienter und sicherer, da verschiedene Funktionalitäten von Hardwareabhängigkeiten und anderen Softwarekomponenten getrennt werden. Container können auf jedem beliebigen Hostbetriebssystem ausgeführt werden und sind von anderen Software- und Hardwareobjekten isoliert. So sind sie vielseitige Tools zum Erstellen von Anwendungen, die einmal erstellt und überall ausgeführt werden können.
Bei Google läuft alles über Container, von der Google-Suche über YouTube bis hin zu Gmail. Die Open-Source-Plattformen Kubernetes und Knative wurden von Google entwickelt und gehören zu den am weitesten verbreiteten Tools zur Verwaltung von Containern und Anwendungen.
Isolation
Da sich alle containerisierte Anwendungen in einer isolierten Umgebung befinden, also von anderen Anwendungen und Systemkomponenten getrennt sind, wirken sich Fehler innerhalb der Anwendung nicht auf andere Anwendungen oder das lokale System aus, was das Ausmaß von Fehlervorfälle einschränken kann.
Portabilität
Containerisierten Anwendungen funktionieren unabhängig vom Betriebssystem und können daher in nahezu jede Umgebung portiert werden, z. B. auf physische Server, virtuelle Maschinen, persönliche Maschinen von Entwicklern oder in die Cloud.
Einfach
Im Gegensatz zu virtuellen Maschinen haben Container keine Version des Betriebssystems mit sich, was sie wesentlich schlanker und effizienter als andere Virtualisierungsmethoden macht.
Effizienz
Containerisierungsanwendungen können den Computing-Kernel und die Ressourcen einer Maschine gemeinsam nutzen. Die Anwendungsschichten innerhalb eines Containers können von mehreren Containern gemeinsam genutzt werden. Containerisierten Anwendungen benötigen daher weniger Ressourcen, sodass mehrere Container auf derselben Maschine oder virtuellen Umgebung ausgeführt werden können.
Skalierbarkeit
Zur Bewältigung erhöhter Anwendungslasten können schnell weitere Containerinstanzen hinzugefügt werden.
Containerisierte Anwendungen führen ein ausführbares Softwarepaket (den Container) aus, das alle Anwendungsabhängigkeiten enthält, die für die Ausführung der Anwendung auf einem Hostbetriebssystem erforderlich sind. Die containerisierte Anwendung umfasst mehrere Objekte, darunter alle das Anwendungskomponenten (z. B. Frameworks, Bibliotheken), aus denen das Container-Image besteht, das dann von der Container Engine ausgeführt wird. Das Container-Image stellt den Entwurf oder die Architektur des Containersystems dar. Wenn die Anwendung ausgeführt wird, wird der Inhalt des Images in eine Containerinstanz kopiert. Sie kann dann in einer beliebigen Anzahl von Containern innerhalb der Anwendung verwendet werden. Container-Images werden gemäß dem Branchenstandard Open Container Initiative (OCI) erstellt, der die freie Verwendung und Kompatibilität von Containern unterstützt.
Container-Engines sind die Laufzeitumgebung für Container und die Plattform, auf der containerisierte Anwendungen ausgeführt werden. Container-Engines akzeptieren die Befehle zum Erstellen, Verwalten und Starten von Containern über Clienttools. Die beliebtesten Container-Engines sind Tools wie Docker oder CRI-O.
Orchestrierungstools werden zum Verwalten von containerisierten Anwendungen verwendet, insbesondere in Umgebungen mit vielen Containern. Orchestrierungstools wie Kubernetes dienen zum Bereitstellen, Verwalten und Skalieren von Containern
Container und virtuelle Maschinen sind in ihrer Funktion ähnlich, aber Container verbrauchen tendenziell weniger Ressourcen und sind flexibler.
Bei virtuellen Maschinen können mehrere Anwendungen und Betriebssysteme die Ressourcen eines einzelnen physischen Computers oder Servers gemeinsam nutzen und gleichzeitig ausgeführt werden (z. B. wie wenn Windows und Linux auf demselben Computer ausgeführt werden). Eine virtuelle Maschine enthält ihre Dateien und Abhängigkeiten sowie eine eigene Kopie des Betriebssystems.
Im Gegensatz zu virtuellen Maschinen enthalten Container keine Kopie des Betriebssystems. Der Hauptunterschied zwischen Containern und virtuellen Maschinen besteht daher darin, dass die Containerisierung Rechenressourcen effizienter nutzt. Die Containerlaufzeit wird stattdessen auf dem vorhandenen Betriebssystem des Computers oder Servers installiert, sodass alle Container dasselbe Betriebssystem verwenden.
Grundsätzlich gibt es zwei Containertypen: Systemcontainer und Anwendungscontainer.
Anwendungscontainer sind zustandslose Lösungen, die in der Regel einen einzelnen Prozess ausführen. Containerisierte Anwendungen sind laufende Anwendungscontainer, in denen jeder Container einen Prozess verarbeitet, wobei mehrere Container von einem Tool wie Kubernetes orchestriert werden.
Auf dem Markt gibt es verschiedene Anwendungscontainer. Docker gilt als der beliebteste. Es gibt jedoch noch einige andere. Die Open-Source-Entwicklung von Containern wird vom OCI verwaltet.
Systemcontainer – auch als Betriebssystemcontainer bezeichnet – sind älter und funktionieren ähnlich wie virtuelle Maschinen, allerdings bei geringerem Rechenaufwand. Systemcontainer verhalten sich wie eigenständige Systeme. Sie enthalten keine Container-Images und erfordern keine spezielle Software. Systemcontainer wurden in der Regel in monolithischen Legacy-Anwendungen verwendet.
Nachfolgend finden Sie einige der gängigsten Engines und Tools für Containeranwendungen:
Die beliebteste Open-Source-Plattform für Containerisierung. Docker ermöglicht das Erstellen und Betrieb von Linux-basierten Containern.
Mit dem Open-Source-Projekt von LinuxContainers.org, LXC, kann eine App mehrere Linux-Systeme gleichzeitig ausführen und nur einen Linux-Kernel als Betriebssystem verwenden.
rkt, auch Rocket genannt, ist eine anwendungsbasierte Container-Engine, die eine detaillierte Steuerung von Containern ermöglicht. Sie kann auch als Komponente in einem Docker-Containersystem verwendet werden.
Ein Container Runtime Interface (CRI) für die Container-Verwaltungsplattform Kubernetes zum Aktivieren OCI-kompatibler Laufzeiten. Wird häufig als Ersatz für Docker bei Verwendung von Kubernetes verwendet.
Profitieren Sie von einem Guthaben über 300 $, um Google Cloud und mehr als 20 „Immer kostenlos“-Produkte kennenzulernen.