Was ist Containerisierung?

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.

Anwendungen mit GKE containerisieren und orchestrieren

Definition von Containerisierung

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.

Containerisierungsarchitektur

Eine containerisierte Umgebung hat eine mehrschichtige Architektur, die mit der zugrunde liegenden Hardware beginnt und bis zur Anwendung selbst reicht.

  • Infrastruktur: Dies ist die Basisebene, die aus dem physischen Server oder der virtuellen Maschine besteht, die die CPU-, Arbeitsspeicher-, Speicher- und Netzwerkressourcen bereitstellt.
  • Host-Betriebssystem: Auf der Infrastruktur befindet sich das Host-Betriebssystem (z. B. Linux). Der Kernel dieses Betriebssystems ist die kritische Komponente, die von allen Containern auf dem Host gemeinsam genutzt wird.
  • Container-Engine: Dies ist die Software, die die Containerisierung ermöglicht, z. B. Google Kubernetes Engine (GKE). Die Engine ist für das Erstellen, Ausführen und Verwalten von Containern gemäß den Anweisungen verantwortlich
  • Anwendungsebene (Container): Ganz oben befinden sich die Container selbst. Jeder Container enthält die Binärdateien und Bibliotheken der Anwendung, nutzt aber den Kernel des Host-Betriebssystems mit. Dadurch sind sie viel schlanker und effizienter als herkömmliche virtuelle Maschinen.

Wie funktioniert die Containerisierung?

Die Containerisierung folgt einem logischen, schrittweisen Prozess, bei dem eine Anwendung vom Quellcode zu einer laufenden, isolierten Instanz überführt wird.

Schritt 1: Umgebung definieren

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:

  • Ein Basis-Image, von dem aus Sie starten können (z. B. eine bestimmte Version von Debian oder eine sprachspezifische Laufzeitumgebung wie Python 3.9)
  • Befehle zum Kopieren des Quellcodes der Anwendung in das Image
  • Anleitung zum Installieren der erforderlichen Pakete, Bibliotheken und anderen Abhängigkeiten
  • Der Befehl, der beim Start des Containers ausgeführt werden soll
  • Ein Basis-Image, von dem aus Sie starten können (z. B. eine bestimmte Version von Debian oder eine sprachspezifische Laufzeitumgebung wie Python 3.9)
  • Befehle zum Kopieren des Quellcodes der Anwendung in das Image
  • Anleitung zum Installieren der erforderlichen Pakete, Bibliotheken und anderen Abhängigkeiten
  • Der Befehl, der beim Start des Containers ausgeführt werden soll

Schritt 2: Container-Image erstellen

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.

Schritt 3: Image in einer Registry speichern und verteilen

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.

Schritt 4: Container ausführen

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:

  • Erstellen Sie eine isolierte Umgebung für den Container, indem Sie Kernel-Funktionen wie Namespaces verwenden. Dadurch erhält der Container einen eigenen Netzwerkstack, Prozessbaum und Dateisystemansicht, sodass er glaubt, auf einem eigenen Betriebssystem zu laufen.
  • Mit Cgroups können Sie Ressourcen wie CPU und Arbeitsspeicher zuweisen und begrenzen, sodass ein Container die Ressourcen des Hosts nicht monopolisieren kann.
  • Führen Sie den in der Originaldatei definierten Startbefehl aus, um die Anwendung in der isolierten Sandbox zum Leben zu erwecken.
  • Erstellen Sie eine isolierte Umgebung für den Container, indem Sie Kernel-Funktionen wie Namespaces verwenden. Dadurch erhält der Container einen eigenen Netzwerkstack, Prozessbaum und Dateisystemansicht, sodass er glaubt, auf einem eigenen Betriebssystem zu laufen.
  • Mit Cgroups können Sie Ressourcen wie CPU und Arbeitsspeicher zuweisen und begrenzen, sodass ein Container die Ressourcen des Hosts nicht monopolisieren kann.
  • Führen Sie den in der Originaldatei definierten Startbefehl aus, um die Anwendung in der isolierten Sandbox zum Leben zu erwecken.

Containerisierung im Cloud-Computing

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.

Vorteile der Containerisierung

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.

Meistern Sie Ihre geschäftlichen Herausforderungen mit Google Cloud

Neukunden erhalten ein Guthaben im Wert von 300 $ für Google Cloud.

Welche Arten von Containerisierungstools gibt es?

Das Container-Ökosystem besteht aus verschiedenen Arten von Tools, die zusammenarbeiten.

  • Container-Engine: Die Kernsoftware, die Container ausführt und verwaltet. 
  • Container-Image-Builder: Tools, mit denen Container-Images aus einer Definitionsdatei erstellt werden. 
  • Container-Registries: Speichersysteme für Container-Images. Artifact Registry ist ein verwalteter Dienst, der eine sichere, private Speicherung Ihrer Container-Images ermöglicht.
  • Plattformen zur Containerorchestrierung: Für die Verwaltung von Containern im großen Maßstab ist eine Orchestrierungsplattform wie Kubernetes unerlässlich. Bereitstellung, Skalierung und Vernetzung werden automatisiert. Verwaltete Dienste wie die Google Kubernetes Engine (GKE) bieten eine produktionsreife Orchestrierungsplattform.
Welches Problem möchten Sie lösen?
What you'll get:
Detaillierte Anleitung
Referenzarchitektur
Vorkonfigurierte Lösungen
Dieser Dienst wurde mit Vertex AI erstellt. Nutzer müssen mindestens 18 Jahre alt sein, um ihn verwenden zu können. Geben Sie keine vertraulichen oder personenbezogenen Daten ein.

Gleich loslegen

Profitieren Sie von einem Guthaben über 300 $, um Google Cloud und mehr als 20 „Immer kostenlos“-Produkte kennenzulernen.

Google Cloud