Für Entwickler in Unternehmen kann es eine Herausforderung sein, sicherzustellen, dass eine Anwendung in verschiedenen Umgebungen zuverlässig und konsistent ausgeführt wird – vom lokalen Laptop über Staging-Server bis hin zur Produktionsinfrastruktur. Die Containerisierung ist eine Form der Betriebssystemvirtualisierung, die dieses Problem direkt löst. Dabei werden eine Anwendung und alle ihre Abhängigkeiten, wie Bibliotheken und Konfigurationsdateien, in einer einzigen, isolierten und ausführbaren Einheit, dem Container, verpackt. Dieser Ansatz bietet eine konsistente Umgebung, sodass das, was in der Entwicklung funktioniert, auch in der Produktion funktioniert.
Containerisierung ist ein Softwarebereitstellungsprozess, bei dem der Code einer Anwendung mit allen Dateien und Bibliotheken gebündelt wird, die für die Ausführung erforderlich sind.
Dieses in sich geschlossene Paket, der Container, ist schlank und portabel, da es kein eigenes Gastbetriebssystem benötigt. Stattdessen wird der Kernel des Hostbetriebssystems gemeinsam genutzt, während der Container in einem eigenen isolierten Userspace ausgeführt wird. Diese Isolation bedeutet, dass Sie mehrere Container auf einem einzelnen Host ausführen können, jeder mit seinen eigenen Abhängigkeiten, ohne sich um Konflikte zwischen ihnen sorgen zu müssen.
Eine containerisierte Umgebung hat eine mehrschichtige Architektur, die mit der zugrunde liegenden Hardware beginnt und bis zur Anwendung selbst reicht.
Die Containerisierung folgt einem logischen, schrittweisen Prozess, bei dem eine Anwendung vom Quellcode zu einer laufenden, isolierten Instanz überführt wird.
Der Prozess beginnt damit, dass der Entwickler eine Datei erstellt (eine beliebte Wahl ist ein Dockerfile). Diese Datei dient als Rezept oder Anleitung zum Erstellen der Umgebung der Anwendung. Es enthält alle erforderlichen Angaben, darunter:
|
Anhand der Anweisungen in der Datei erstellt ein Entwickler mit einem Befehl ein Container-Image. Dieses Image ist eine statische, unveränderliche und übertragbare Datei, die als in sich geschlossener Bauplan für die Anwendung dient. Dabei werden der Anwendungscode und alle seine Abhängigkeiten in einem einzigen, mehrschichtigen Paket zusammengefasst. Sie können sich das Image wie eine Klasse in der objektorientierten Programmierung vorstellen. Es ist die Vorlage, aus der laufende Instanzen erstellt werden.
Nach dem Erstellen wird das Container-Image per Push an eine Container Registry übertragen. Eine Registry ist ein zentrales Repository zum Speichern und Verwalten von Images. Für die Nutzung in Unternehmen ist eine private, sichere Registry wie Artifact Registry von Google unerlässlich. Wenn Sie das Image in einer Registry speichern, können Sie es ganz einfach mit anderen Teams teilen, die Versionsverwaltung nutzen und von jedem Server in Ihrer Produktionsumgebung darauf zugreifen.
Im letzten Schritt wird eine laufende Instanz des Images erstellt, also der Container selbst. Ein Befehl wird an die Container-Engine gesendet, um ein bestimmtes Image aus der Registry auszuführen. Die Engine verwendet dann den Kernel des Hostbetriebssystems, um:
|
Die Containerisierung ist eine grundlegende Technologie für modernes Cloud Computing und ermöglicht eine Vielzahl von Architekturmustern.
Konzept | Beschreibung und Rolle der Containerisierung |
Containerisierung ist das ideale Bereitstellungsmodell für eine Mikrodienste-Architektur. Jeder Container kapselt einen einzelnen, unabhängigen Dienst, sodass Teams ihre Dienste autonom entwickeln, bereitstellen und skalieren können. | |
Container können den Prozess der Migration von Legacy-Anwendungen in die Cloud vereinfachen. Wenn Sie eine Anwendung in einen Container „heben und verschieben“, wird sie portierbar und kann in der Infrastruktur jedes Cloud-Anbieters ausgeführt werden. | |
Die Portabilität von Containern trägt dazu bei, dass Anwendungen in lokalen Rechenzentren und öffentlichen Cloud-Umgebungen konsistent ausgeführt werden. Sie ist ein wichtiger Faktor für eine nahtlose Hybrid-Cloud-Strategie. | |
Dies ist ein Cloud-Dienstmodell, wie z. B. die Google Kubernetes Engine (GKE), das die Orchestrierung und Verwaltung von Containern automatisiert. Die zugrunde liegende Infrastruktur wird abstrahiert, sodass sich Entwickler auf die Anwendung konzentrieren können. | |
Container bieten mehr Kontrolle über die Betriebsumgebung und die Sprachlaufzeit, während Serverless eine höhere Abstraktionsebene ohne Serververwaltung bietet. Beide sind gültige Muster und können zusammen verwendet werden. (Beispiel: Container werden häufig zum Ausführen serverloser Arbeitslasten verwendet.) Cloud Run verwendet beispielsweise Containerisierung und Serverless. Damit können Sie Container-Images in einer serverlosen Umgebung bereitstellen. | |
Bei der Virtualisierung wird eine vollständige virtuelle Maschine mit eigenem Gastbetriebssystem erstellt, wobei die Hardware virtualisiert wird. Bei der Containerisierung wird das Betriebssystem selbst virtualisiert, wobei der Kernel des Host-Betriebssystems gemeinsam genutzt wird. Dadurch sind Container viel schlanker und schneller zu starten. | |
Die Konsistenz von Container-Images ermöglicht es Unternehmen, exakt dasselbe Anwendungsartefakt mit hoher Genauigkeit in mehreren geografischen Regionen bereitzustellen. So wird ein einheitliches Anwendungsverhalten gewährleistet und die Verwaltung für eine globale Nutzerbasis vereinfacht. |
Konzept
Beschreibung und Rolle der Containerisierung
Containerisierung ist das ideale Bereitstellungsmodell für eine Mikrodienste-Architektur. Jeder Container kapselt einen einzelnen, unabhängigen Dienst, sodass Teams ihre Dienste autonom entwickeln, bereitstellen und skalieren können.
Container können den Prozess der Migration von Legacy-Anwendungen in die Cloud vereinfachen. Wenn Sie eine Anwendung in einen Container „heben und verschieben“, wird sie portierbar und kann in der Infrastruktur jedes Cloud-Anbieters ausgeführt werden.
Die Portabilität von Containern trägt dazu bei, dass Anwendungen in lokalen Rechenzentren und öffentlichen Cloud-Umgebungen konsistent ausgeführt werden. Sie ist ein wichtiger Faktor für eine nahtlose Hybrid-Cloud-Strategie.
Dies ist ein Cloud-Dienstmodell, wie z. B. die Google Kubernetes Engine (GKE), das die Orchestrierung und Verwaltung von Containern automatisiert. Die zugrunde liegende Infrastruktur wird abstrahiert, sodass sich Entwickler auf die Anwendung konzentrieren können.
Container bieten mehr Kontrolle über die Betriebsumgebung und die Sprachlaufzeit, während Serverless eine höhere Abstraktionsebene ohne Serververwaltung bietet. Beide sind gültige Muster und können zusammen verwendet werden. (Beispiel: Container werden häufig zum Ausführen serverloser Arbeitslasten verwendet.) Cloud Run verwendet beispielsweise Containerisierung und Serverless. Damit können Sie Container-Images in einer serverlosen Umgebung bereitstellen.
Bei der Virtualisierung wird eine vollständige virtuelle Maschine mit eigenem Gastbetriebssystem erstellt, wobei die Hardware virtualisiert wird. Bei der Containerisierung wird das Betriebssystem selbst virtualisiert, wobei der Kernel des Host-Betriebssystems gemeinsam genutzt wird. Dadurch sind Container viel schlanker und schneller zu starten.
Die Konsistenz von Container-Images ermöglicht es Unternehmen, exakt dasselbe Anwendungsartefakt mit hoher Genauigkeit in mehreren geografischen Regionen bereitzustellen. So wird ein einheitliches Anwendungsverhalten gewährleistet und die Verwaltung für eine globale Nutzerbasis vereinfacht.
Portabilität und Konsistenz
Einer der Hauptvorteile der Containerisierung ist die Möglichkeit, Anwendungen einmal zu erstellen und überall auszuführen. Da ein Container eine Anwendung und ihre Abhängigkeiten zusammen verpackt, entsteht eine vorhersehbare und konsistente Umgebung. Diese Konsistenz trägt dazu bei, das häufige Problem „Auf meinem Computer funktioniert es“ zu beseitigen, und sorgt dafür, dass sich eine Anwendung in Entwicklung, Test und Produktion gleich verhält, unabhängig von der zugrunde liegenden Infrastruktur.
Erhöhte Geschwindigkeit und Flexibilität
Container sind wesentlich schlanker als herkömmliche virtuelle Maschinen, da sie kein eigenes Gastbetriebssystem benötigen. So lassen sie sich in Sekundenschnelle starten und stoppen, was die Entwicklungszyklen erheblich beschleunigt und agilere CI/CD-Pipelines ermöglicht. Schnellere Builds und Bereitstellungen ermöglichen es Teams, Anwendungen schneller zu iterieren.
Verbesserte Ressourceneffizienz
Aufgrund ihres geringen Overheads ermöglichen Container eine höhere Ressourcenauslastung. Sie können mehrere Container auf einem einzigen Hostbetriebssystem ausführen, was zu einer höheren Dichte als bei VMs führt. Durch diese effiziente „Bin Packing“-Methode für Anwendungen auf Servern können Unternehmen möglicherweise ihre Serverlandschaft und die damit verbundenen Infrastrukturkosten reduzieren.
Prozess- und Abhängigkeitsisolation
Jeder Container wird in einem eigenen isolierten Nutzerbereich mit eigenem Prozessbaum und eigener Netzwerkschnittstelle ausgeführt. Diese Isolation bedeutet, dass die Bibliotheken und Abhängigkeiten einer containerisierten Anwendung nicht mit denen einer anderen Anwendung auf demselben Host in Konflikt geraten. Das vereinfacht die Abhängigkeitsverwaltung und kann auch die Sicherheit verbessern, indem die potenziellen Auswirkungen einer kompromittierten Anwendung eingedämmt werden.
Vereinfachte Betriebsverwaltung
Die Containerisierung standardisiert die Bereitstellungseinheit. Betriebsteams können Container verwalten, anstatt ganze Maschinen oder einzelne Anwendungsstacks. Dieser einheitliche Ansatz vereinfacht die Bereitstellung, Skalierung und Überwachung und bildet die Grundlage für eine leistungsstarke Automatisierung durch Orchestrierungsplattformen wie Kubernetes.
Schnelle Skalierbarkeit
Da Container schlank sind und schnell gestartet werden können, eignen sie sich ideal für Anwendungen, die schnell skaliert werden müssen. Wenn die Nachfrage nach einer Anwendung plötzlich ansteigt, können neue Containerinstanzen fast sofort bereitgestellt werden, um die Last zu bewältigen. Diese elastische Skalierbarkeit trägt dazu bei, dass Anwendungen reaktionsfähig und verfügbar bleiben, ohne dass umfangreiche manuelle Eingriffe erforderlich sind.
Das Container-Ökosystem besteht aus verschiedenen Arten von Tools, die zusammenarbeiten.
Profitieren Sie von einem Guthaben über 300 $, um Google Cloud und mehr als 20 „Immer kostenlos“-Produkte kennenzulernen.