Cloud-Container: Entwicklung von Anwendungen in der Cloud
Cloud-Container sind leichtgewichtige, portable Pakete, die eine Anwendung mitsamt ihrer Abhängigkeiten isolieren. Im Gegensatz zu virtuellen Maschinen teilen sie sich den Betriebssystemkern, was sie sehr effizient macht. Sie bilden die technologische Basis für Microservices und moderne Cloud-Native-Architekturen.
Was sind Cloud-Container?
Cloud Computing spielt für zahlreiche Unternehmen eine immer größere Rolle. Die Vorteile der Arbeit in einer Cloud sind vielfältig und reichen von immensen Kostenersparnissen über mehr Flexibilität bis zum größeren Angebot an Software, Speicher oder Servern. Neben herkömmlichen Cloud-Lösungen setzen viele große Firmen wie Google oder Microsoft immer öfter auch auf Cloud-Container.
Cloud-Container sind abstrakte und eigenständige Software-Einheiten, die Anwendungen samt ihrer Abhängigkeiten in einer isolierten Umgebung ausführen. Anders als virtuelle Maschinen virtualisieren sie jedoch keine komplette Hardware-Infrastruktur und bringen kein eigenes vollständiges Betriebssystem mit. Stattdessen arbeiten sie auf Betriebssystemebene: Mehrere Container teilen sich den Kernel des Hostsystems, laufen aber als voneinander getrennte Prozesse.
Diese Isolation wird unter Linux vor allem durch Namespaces und cgroups ermöglicht. Namespaces sorgen dafür, dass ein Container nur die für ihn vorgesehenen Prozesse, Netzwerkbereiche oder Dateisystemansichten sieht. cgroups begrenzen und steuern dagegen den Zugriff auf Ressourcen wie CPU, Arbeitsspeicher oder I/O. Dadurch kann ein Container nicht unbegrenzt auf die physischen Ressourcen des Hosts zugreifen. Die Anwendung innerhalb des Containers bleibt dennoch weitgehend unabhängig von der Umgebung, weil benötigte Bibliotheken, Abhängigkeiten und Konfigurationen im Container-Image gebündelt werden.
Die ideale Plattform für performante und hochskalierbare Container-Anwendungen. Umfassend ins IONOS Cloud Ökosystem integriert und rund um die Uhr professionell betreut.
Wie funktionieren Cloud-Container?
Die Funktionsweise von Cloud-Containern entspricht weitestgehend gewöhnlichen Containern, die beispielsweise im Bereich der Software-Entwicklung bereits seit vielen Jahren eingesetzt werden. Ein Cloud-Container führt eine Anwendung als isolierten Prozess auf dem Hostsystem aus. Dafür enthält das Container-Image die Anwendung selbst sowie alle notwendigen Abhängigkeiten, Konfigurationen und Bibliotheken. Ausgeführt wird dieses Image durch eine Container-Runtime bzw. Container-Engine.
Die Trennung zwischen den Containern entsteht auf Betriebssystemebene. Der gemeinsame Host-Kernel stellt Mechanismen bereit, mit denen Prozesse voneinander abgeschirmt und Ressourcen gezielt begrenzt werden können. So erhält jeder Container eine eigene, isolierte Sicht auf bestimmte Systembereiche, ohne dass dafür ein vollständiges Gastbetriebssystem gestartet werden muss. Dadurch bleiben Container ressourceneffizient und lassen sich schnell starten, verschieben und vervielfältigen.
Cloud-Container vs. virtuelle Maschinen: Wo liegen die Unterschiede?
Cloud-Container und virtuelle Maschinen (VMs) verfolgen ein ähnliches Ziel: Anwendungen sollen isoliert und möglichst unabhängig von der zugrunde liegenden Infrastruktur betrieben werden. Technisch unterscheiden sich beide Ansätze jedoch deutlich. Bei einer VM wird die Hardware virtualisiert. Zwischen physischem Server und virtueller Maschine liegt ein sogenannter Hypervisor, der virtuelle Ressourcen wie CPU, Arbeitsspeicher, Netzwerkschnittstellen und Speicherplatz bereitstellt. Jede VM bringt dabei in der Regel ein vollständiges Gastbetriebssystem inklusive eigenem Kernel mit.
Cloud-Container arbeiten schlanker. Sie virtualisieren nicht die komplette Hardware, sondern laufen als voneinander isolierte Prozesse auf demselben Betriebssystemkern des Hosts. Der Container enthält die Anwendung sowie alle benötigten Abhängigkeiten, Bibliotheken und Konfigurationen, teilt sich aber den Kernel mit dem Hostsystem und anderen Containern. Dadurch benötigen Container weniger Ressourcen, starten schneller und lassen sich dichter nebeneinander betreiben als klassische virtuelle Maschinen.
| Kriterium | Cloud-Container | Virtuelle Maschine |
|---|---|---|
| Virtualisierungsebene | Betriebssystemebene | Hardwareebene |
| Abstraktionsebene | Anwendung und Laufzeitumgebung | Vollständiges virtuelles System |
| Technische Basis | Gemeinsamer Host-Kernel | Hypervisor mit eigenem Gastbetriebssystem |
| Ressourcenbedarf | Geringer, da kein vollständiges Betriebssystem pro Container nötig ist | Höher, da jede VM ein eigenes Betriebssystem mitbringt |
| Größe | Meist deutlich kleiner, da nur Anwendung, Abhängigkeiten und Konfiguration enthalten sind | Meist deutlich größer, da ein komplettes Betriebssystem enthalten ist |
| Startzeit | In der Regel sehr kurz, oft nur wenige Sekunden oder weniger | Meist länger, da ein vollständiges Gastbetriebssystem gestartet werden muss |
| Isolation | Prozess- und Ressourcentrennung auf Betriebssystemebene | Stärkere Trennung durch eigenes Gastbetriebssystem |
Besonders wichtig ist dieser Unterschied für Multi-Cloud-Strategien. Ein Container-Image kann einmal erstellt und anschließend in unterschiedlichen Umgebungen ausgeführt werden – etwa in einer Private Cloud, bei einem Public-Cloud-Anbieter oder in einer Kubernetes-Umgebung. Dieses Prinzip wird häufig als „Write once, run anywhere“ beschrieben. Unternehmen vermeiden dadurch, Anwendungen für jede Cloud-Plattform vollständig neu paketieren oder konfigurieren zu müssen.
Wofür werden Cloud-Container eingesetzt?
Es gibt grundsätzlich sehr viele Anwendungsmöglichkeiten für Cloud-Container. Ihre Bauweise und Eigenschaften machen sie zur idealen Lösung für zahlreiche Workloads. Zu den gängigsten Anwendungsfällen gehören folgende:
- Cloud-native Anwendungen: Cloud-native Anwendungen profitieren von Cloud-Containern, da diese einen sehr geringen Ressourcenverbrauch haben. So ist es möglich, sehr viele Cloud-Container ressourcenschonend auf derselben Infrastruktur zu betreiben.
- Hybrid Cloud und Multi Cloud: In einer Hybrid Cloud werden Cloud-Container dafür verwendet, Workloads in unterschiedlichen Umgebungen auszuführen. Der Wechsel von einer Cloud in eine andere ist deutlich einfacher, da Container-Images Anwendung, Abhängigkeiten und Konfiguration bereits mit sich führen. Nach dem Prinzip „Write once, run anywhere“ können Anwendungen dadurch konsistenter über Private Clouds, Public Clouds oder lokale Infrastrukturen hinweg bereitgestellt werden. Gleichzeitig erhalten Admins eine bessere Übersicht über alle Bereitstellungsorte. Auch in einem Multi-Cloud-Ansatz ist dies vorteilhaft.
- Machine Learning: Da einzelne Algorithmen in unterschiedlichen Containern ausgeführt werden können, ohne einander zu beeinflussen, ist die Technik die perfekte Umgebung für effizientes Machine Learning.
- Microservices: Microservices sind kleinere Funktionen innerhalb einer größeren Anwendung. Ihre Ausführung sollte vor allem schnell sein und möglichst wenige Ressourcen benötigen. Genau diese Anforderungen erfüllt die Bereitstellung über einen Cloud-Container, da dieser besonders leichtgewichtig ist.
- CI/CD und DevOps-Workflows: Cloud-Container sind ein wichtiger Baustein für moderne Entwicklungs- und Bereitstellungsprozesse. In CI/CD-Pipelines können Anwendungen automatisiert gebaut, getestet und als Container-Image bereitgestellt werden. Dadurch lassen sich neue Funktionen, Updates oder Fehlerbehebungen schneller und zuverlässiger ausrollen. Für DevOps-Teams entsteht ein einheitlicher Workflow von der Entwicklung über das Testing bis zum produktiven Betrieb, da dieselbe containerisierte Anwendung in verschiedenen Umgebungen genutzt werden kann.
- Migration: Wie bereits erwähnt, sind Cloud-Container ideal für die Migration, da alle Abhängigkeiten und die Konfiguration bereits enthalten und losgekoppelt von anderen Anwendungen sind. Soll also eine Anwendung verschoben werden, eignet sich ein Cloud-Container dafür perfekt.
- Modernisierung: Da Cloud-Container immer wichtiger werden und in vielen Unternehmen bereits jetzt zum Einsatz kommen, eignet sich ihre Implementierung auch dazu, das eigene System sowie den Workflow zu modernisieren.
- Stapelverarbeitung: Auch im Bereich der Automatisierung von Prozessen können Cloud-Container eine wichtige Rolle spielen. Sie eignen sich für die Stapelverarbeitung, die ohne menschliches Eingreifen auskommt, da ihre Abhängigkeiten sowie ihre Umgebung nicht extra neu definiert werden müssen.
Checkliste: Wann eignen sich Cloud-Container?
Cloud-Container sind nicht für jede Anwendung automatisch die beste Lösung. Besonders sinnvoll sind sie, wenn mehrere der folgenden Punkte zutreffen:
- Die Anwendung besteht aus Microservices: Einzelne Funktionen oder Services können unabhängig voneinander entwickelt, bereitgestellt und skaliert werden.
- Schnelle Deployment-Zyklen sind wichtig: Updates, neue Funktionen oder Bugfixes sollen regelmäßig und automatisiert veröffentlicht werden.
- CI/CD-Pipelines werden genutzt: Anwendungen sollen automatisiert gebaut, getestet und als Container-Image bereitgestellt werden.
- Skalierbarkeit spielt eine zentrale Rolle: Die Anwendung muss flexibel auf steigende oder schwankende Lasten reagieren können.
- Unterschiedliche Umgebungen müssen konsistent bleiben: Entwicklung, Test und Produktion sollen möglichst auf derselben technischen Grundlage laufen.
- Hybrid- oder Multi-Cloud-Strategien sind geplant: Workloads sollen zwischen verschiedenen Cloud-Umgebungen, lokalen Systemen oder Cloud-Anbietern verschoben werden können.
- Ressourcen sollen effizient genutzt werden: Mehrere Anwendungen oder Services sollen platzsparend und mit geringem Overhead betrieben werden.
- Teams arbeiten nach DevOps- oder DevSecOps-Prinzipien: Entwicklung, Betrieb und Sicherheit sollen enger verzahnt und stärker automatisiert werden.
- Anwendungen müssen schnell repliziert werden können: Zusätzliche Instanzen sollen bei Bedarf kurzfristig bereitstehen.
- Abhängigkeiten sollen sauber gekapselt werden: Bibliotheken, Konfigurationen und Laufzeitumgebungen sollen gemeinsam mit der Anwendung bereitgestellt werden.
Welche Vorteile haben Cloud-Container?
Cloud-Container bieten für die meisten Unternehmen zahlreiche Vorteile und können für viele Anwendungsfälle eine geeignete Lösung sein. Zu den wichtigsten Pro-Argumenten zählen:
- Flexibilität: Cloud-Container sind eine sehr flexible und auch effiziente Lösung. Durch die Isolation von anderen Anwendungen können Container-Images individuell konfiguriert und dann genutzt werden. Auch die Migration ist sehr einfach, wodurch die Arbeit in verschiedenen Umgebungen möglich ist.
- Geringe Kosten: Auch der Kostenfaktor sollte in jedem Fall immer mitgedacht werden. Hier überzeugen Cloud-Container ebenfalls. Die Ausgaben lassen sich niedrig halten und gleichzeitig ist die Implementierung zahlreicher Container nebeneinander möglich.
- Platzbedarf: Da Container kein eigenes vollständiges Betriebssystem mitbringen, benötigen sie deutlich weniger Speicherplatz und Systemressourcen als beispielsweise virtuelle Maschinen.
- Skalierbarkeit: Steigen die Arbeitslasten, können Cloud-Container schnell vervielfältigt und auf zusätzliche Ressourcen verteilt werden. In Verbindung mit Orchestrierungslösungen wie Kubernetes ist auch Auto-Scaling möglich: Werden bestimmte Lastgrenzen erreicht, können automatisch weitere Container-Instanzen gestartet werden. Sinkt der Bedarf wieder, lassen sich nicht mehr benötigte Instanzen ebenso automatisch reduzieren.
- Isolation: Die Isolation der einzelnen Cloud-Container wirkt sich auch deshalb positiv aus, weil Probleme oder Fehler innerhalb eines Containers keine negativen Auswirkungen auf die umliegenden Container haben. So ist es möglich, Anwendungen ohne Gefahren zu testen und Bugs schneller zu identifizieren.
- Sicherheit: Cloud-Container gelten als sichere Architektur, sofern sie korrekt konfiguriert und betrieben werden. Dazu trägt nicht nur die Isolation bei, sondern auch die Möglichkeit, Sicherheitsberechtigungen für jeden Container einzeln zu definieren.
- Entwicklerfreundlichkeit: Für Entwicklerinnen und Entwickler sind Cloud-Container besonders hilfreich, weil Entwicklung, Test und Produktion auf einer einheitlichen technischen Grundlage stattfinden können. Eine Anwendung wird inklusive ihrer Abhängigkeiten als Container-Image verpackt und kann anschließend automatisiert getestet, versioniert und bereitgestellt werden. Das erleichtert CI/CD-Pipelines, reduziert Unterschiede zwischen Entwicklungs- und Produktivumgebungen und unterstützt schnelle Deployment-Zyklen.
Welche Software ist für Cloud-Container empfehlenswert?
Viele Provider bieten Container as a Service (CaaS) an. Welche Lösung am besten geeignet ist, hängt stark vom jeweiligen Einsatzzweck, der vorhandenen Infrastruktur und der gewünschten Cloud-Strategie ab. Cloud-Container basieren auf offenen Standards der Open Container Initiative (OCI), die insbesondere das Image-Format und die Runtime-Spezifikation definieren. Aspekte wie Netzwerk, Storage oder Orchestrierung sind bewusst nicht Teil der OCI-Standards und werden durch zusätzliche Komponenten wie Kubernetes und CNI-Plugins umgesetzt.
Container-Orchestrierung mit Kubernetes
Cloud-Container sind sehr gut geeignet, um einzelne Anwendungen samt ihrer Abhängigkeiten bereitzustellen. Für produktive Cloud-Umgebungen reicht das allein jedoch meist nicht aus. Sobald viele Container parallel laufen, mehrere Anwendungsversionen verwaltet werden müssen oder Workloads dynamisch auf unterschiedliche Server verteilt werden sollen, wird eine übergeordnete Steuerungsebene benötigt. Genau hier kommt Container-Orchestrierung ins Spiel.
Eine der wichtigsten Lösungen dafür ist Kubernetes, oft auch K8s genannt. Kubernetes arbeitet nach dem Prinzip eines deklarativen „Desired State“-Modells. Ein kontinuierlicher Control Loop (Reconciliation Loop) vergleicht den gewünschten Zustand mit dem aktuellen Zustand und korrigiert Abweichungen automatisch. Dieses Prinzip wird als Self-Healing bezeichnet. Außerdem verteilt Kubernetes eingehende Anfragen über Services auf verfügbare Container-Instanzen und unterstützt dadurch Load Balancing. Für neue Versionen einer Anwendung lassen sich automatisierte Rollouts nutzen, bei denen Container schrittweise ersetzt werden. Treten Probleme auf, kann die vorherige Version kontrolliert wiederhergestellt werden.
Damit wird Kubernetes zu einem zentralen Baustein für Cloud-Container im Unternehmenseinsatz. Während Container die Anwendung portabel und unabhängig von einzelnen Umgebungen machen, übernimmt Kubernetes den Betrieb im größeren Maßstab. Es verbindet Deployment, Skalierung, Verfügbarkeit und Ausfallsicherheit in einer gemeinsamen Plattform und macht Container dadurch für den produktiven Cloud-Einsatz skalierbar und zuverlässig verwaltbar.
Container-Runtimes: Docker und Alternativen
Eine mögliche Implementierung zur Erstellung von OCI-konformen Container-Images ist Docker. Docker wird vor allem im Entwicklungsumfeld genutzt, um Images zu bauen, zu testen und lokal auszuführen. In Kubernetes-Clustern wird Docker allerdings nicht mehr als Runtime verwendet. Stattdessen nutzt Kubernetes das Container Runtime Interface (CRI), über das moderne Runtimes angebunden werden, die im Cluster die eigentliche Ausführung und Verwaltung von Containern übernehmen. Besonders beliebt sind die beiden folgenden Laufzeiten:
- containerd ist die am weitesten verbreitete Runtime und wird in vielen Cloud- und Managed-Kubernetes-Umgebungen eingesetzt.
- CRI-O ist eine schlanke, Kubernetes-spezifische Runtime, die ausschließlich für den Betrieb von Pods entwickelt wurde.
Neben diesen Cluster-Runtimes gibt es auch Werkzeuge für die lokale Arbeit wie Podman. Hierbei handelt es sich um ein daemonloses Tool für die lokale Container-Verwaltung mit einem Docker-kompatiblen CLI. Podman dient vor allem der Entwicklung und dem Testing außerhalb des Clusters.
Container sind ein Betriebssystem-Level-Virtualisierungskonzept (OCI-Standard). Docker ist ein Tool zur Erstellung und Ausführung von Containern. Kubernetes ist ein Orchestrierungssystem zur Verwaltung von Container-Clustern.
Serverless Container und Managed Services
Neben selbst verwalteten Container-Umgebungen und Kubernetes-Clustern haben sich in der Cloud weitere Abstraktionsebenen etabliert. Bei sogenannten Serverless Containers starten Nutzerinnen und Nutzer containerisierte Anwendungen, ohne die zugrunde liegenden Server, Cluster oder Laufzeitumgebungen direkt verwalten zu müssen. Der Begriff „serverless“ bedeutet dabei nicht, dass keine Server mehr verwendet werden. Vielmehr übernimmt der Cloud-Anbieter Aufgaben wie Bereitstellung, Skalierung, Infrastrukturverwaltung und Teile des Betriebs im Hintergrund.
Für Entwicklungsteams kann dieser Ansatz besonders attraktiv sein, wenn Anwendungen schnell bereitgestellt werden sollen, ohne sich intensiv mit Serverkonfiguration, Cluster-Wartung oder Kapazitätsplanung zu beschäftigen. Statt eine eigene Infrastruktur aufzubauen, wird meist ein Container-Image bereitgestellt und mit Angaben zu Ressourcen, Netzwerkzugriffen oder Umgebungsvariablen konfiguriert. Die Plattform kümmert sich anschließend darum, die Anwendung auszuführen und je nach Nachfrage zusätzliche Instanzen bereitzustellen oder nicht benötigte Kapazitäten wieder zu reduzieren.
Serverless Container eignen sich vor allem für:
- Webanwendungen
- APIs
- Hintergrundprozesse
- Ereignisgesteuerte Workloads
- Dienste mit stark schwankender Auslastung
Sie verbinden die Portabilität von Containern mit dem Komfort verwalteter Cloud-Dienste. Unternehmen behalten dadurch die Vorteile containerisierter Anwendungen, müssen aber weniger operative Verantwortung für die darunterliegende Infrastruktur übernehmen.
Beispiele für solche Plattformen sind AWS Fargate, Google Cloud Run oder Azure Container Apps. Typisch für diesen Ansatz ist, dass Ressourcen automatisch skaliert werden – inklusive sogenannter „Cold Starts“, bei denen Container erst bei Bedarf gestartet werden. Dadurch eignen sich Serverless Container besonders für unregelmäßige oder ereignisgesteuerte Workloads.
Container Security und DevSecOps
Sicherheit sollte bei Cloud-Containern nicht erst im laufenden Betrieb berücksichtigt werden, sondern von Anfang an Teil der Container-Strategie sein. In modernen DevSecOps-Workflows werden Sicherheitsprüfungen deshalb direkt in Entwicklung, Build-Prozess und Deployment integriert. So lassen sich Risiken früh erkennen, bevor ein Container-Image in produktive Umgebungen gelangt.
Wichtige Sicherheitsmaßnahmen sind:
- Image Scanning: Container-Images werden automatisiert auf bekannte Schwachstellen, veraltete Pakete, unsichere Abhängigkeiten oder problematische Konfigurationen geprüft. Diese Prüfung kann bereits in der CI/CD-Pipeline stattfinden, sodass fehlerhafte oder unsichere Images gar nicht erst freigegeben werden.
- Schlanke Images: Container-Images sollten nur die Komponenten enthalten, die für die jeweilige Anwendung tatsächlich benötigt werden. Je kleiner das Image, desto kleiner ist in der Regel auch die Angriffsfläche.
- Rootless Container: Container-Prozesse können ohne umfassende Root-Rechte auf dem Hostsystem ausgeführt werden. Das reduziert Risiken, falls ein Container kompromittiert wird.
- Least-Privilege-Prinzip: Jeder Container erhält nur die Rechte, Netzwerkzugriffe und Systemfunktionen, die er für seine Aufgabe wirklich benötigt.
- Secret Management: Zugangsdaten, API-Schlüssel, Tokens oder Zertifikate sollten nicht fest im Container-Image oder im Quellcode gespeichert werden. Stattdessen werden sie über dafür vorgesehene Mechanismen der jeweiligen Plattform kontrolliert bereitgestellt und verwaltet.
Moderne Container-Sicherheit umfasst nicht nur den laufenden Container, sondern auch die gesamte Software Supply Chain inklusive Build-Prozess, Abhängigkeiten und Container-Images. Wichtige Bausteine sind:
- SBOM (Software Bill of Materials): Eine vollständige Liste aller enthaltenen Bibliotheken und Abhängigkeiten eines Container-Images.
- Image Signing (z. B. Cosign / Sigstore): Stellt sicher, dass ein Container-Image unverändert und authentisch ist.
- SLSA-Provenance: Dokumentiert, wie und wo ein Container gebaut wurde und schützt die Build-Pipeline vor Manipulationen.
Ziel dieser Ansätze ist es, sicherzustellen, dass nur verifizierte und unveränderte Artefakte in Produktion gelangen.
- IONOS Cloud-Partner: Die Experten für Ihren Datenbank-Betrieb
- Flexibel: Maßgeschneiderte Datenbank-Lösungen ganz auf Ihre Bedürfnisse
- Rechenzentren in Deutschland: Ihre Daten sind sicher


