We couldn't find a match for given <KEYWORD>, please try again.

Was sind Container?

Ein Container ist ein schlankes, eigenständiges Paket, das eine vollständige Laufzeitumgebung einschließlich einer Anwendung und ihrer Abhängigkeiten (Bibliotheken, Binärdateien und zusätzliche Konfigurationsdateien) kapselt. Auf diese Weise werden Portabilität, Skalierbarkeit, Sicherheit und Agilität einer Anwendung erhöht.

Container sind sowohl bei Entwicklern als auch bei Operators beliebt, da sie eine unkomplizierte Möglichkeit bieten, Anwendungen unabhängig von der Zielumgebung bereitzustellen und zu verwalten. Sie vereinfachen DevOps- und DevSecOps-Abläufe durch eine bessere Übergabe zwischen Entwicklungs- und Operations-Teams.

Container erhöhen Dichte und Auslastung durch effiziente Ressourcennutzung. Obwohl Container mit fast jeder Anwendung verwendet werden können, werden sie häufig zusammen mit Microservices eingesetzt, in denen mehrere Container separate Anwendungskomponenten oder Services ausführen. Container, aus denen sich eine Anwendung zusammensetzt, werden in der Regel über eine Container-Orchestrierungsplattform, z. B. Kubernetes, koordiniert und verwaltet.

Container werden erstellt, indem Anwendungen aus mehreren Images von einem oder mehreren Repositorys zusammen mit Bibliotheken oder anderen Anwendungsabhängigkeiten in einem Paket zusammengefasst werden. Dadurch werden Portabilitäts- und Kompatibilitätsprobleme vermieden.

Eine neue Methode zum Erstellen von Containern für Kubernetes

Eine neue Methode zum Erstellen von Containern für Kubernetes

Die Synergien zwischen Containern und virtuellen Maschinen

Container und VMs im Vergleich

Jede virtuelle Maschine (VM) führt eine vollständige oder teilweise Instanz eines Betriebssystems aus, während sich mehrere Container eine einzige Betriebssysteminstanz teilen. Ein Container enthält sämtliche Elemente, die zum Ausführen einer Anwendung erforderlich sind. Auf diese Weise können mehrere containerbasierte Anwendungen unabhängig voneinander auf einem einzigen Hostsystem ausgeführt werden. Durch das Ausführen mehrerer Container innerhalb einer VM ist es möglich, die beiden Technologien zusammen zu verwenden.

Vorteile von Containern

Der Einsatz von Containern zum Erstellen von Anwendungen beschleunigt die Bereitstellung neuer Funktionen und fördert eine Umgebung der kontinuierlichen Innovation. Die Vorteile:

Agilität: Verbesserte Entwickleragilität steigert die Produktivität und beschleunigt die Anwendungsentwicklung. Container optimieren CI/CD-Pipelines und eignen sich damit hervorragend für DevOps-Teams und die Bereitstellung von Microservices.

Skalierbarkeit und Hochverfügbarkeit: Mit Kubernetes werden Container-Bereitstellungen automatisch nach oben oder unten skaliert, wenn sich Workload-Anforderungen ändern. Dadurch erhöht sich die Anwendungsverfügbarkeit.

Portabilität: Container nehmen weniger Ressourcen in Anspruch und sind schlanker als VMs. Containerbasierte Anwendungen sind infrastrukturunabhängig und funktionieren unabhängig vom Bereitstellungsort.

Resilienz: Eine containerbasierte Anwendung ist vom Betriebssystem und anderen Containern isoliert und abstrahiert. Der Ausfall eines Containers hat keine Auswirkungen auf andere ausgeführte Container.

Container-Standards

Standards für Container-Formatierung und Laufzeitumgebungen werden von der Open Container Initiative (OCI) kontrolliert. Dieses Projekt wurde 2015 ausdrücklich für die Erstellung offener Branchenstandards ins Leben gerufen. Die OCI bietet gegenwärtig zwei Spezifikationen: die Laufzeitspezifikation (runtime-spec) und die Image-Spezifikation (image-spec).

Container-Sicherheit

Container erfordern Änderungen in Bezug auf das Implementieren und Verwalten von Sicherheitsrichtlinien. Sicherheit sollte so weit wie möglich in den Container-Lebenszyklus integriert werden, und zwar mithilfe eines DevSecOps-Ansatzes. Sicherheitsteams arbeiten mit Entwicklungs- und Operations-Teams zusammen und passen vorhandene Governance- und Compliance-Richtlinien an neue Tools und Änderungen des Anwendungslebenszyklus an.

Container-Automatisierung

Manuelle Aufgaben bremsen Entwicklungsteams aus. Dank Container-Automatisierung müssen sich Entwickler nicht mit Paketierung befassen, sondern können sich auf Code konzentrieren. Container-Images werden in Layern erstellt. Mit einem automatisierten Ansatz für Container-Builds muss bei Layeränderungen nur der betreffende Layer aktualisiert werden. Sollen beispielsweise nur Systembibliotheken aktualisiert werden, so muss nur der Layer mit den Bibliotheken neu erstellt werden. Da die anderen Layer unverändert bleiben, reduziert sich der Test- und Validierungsaufwand. Aktualisierte Container können also schneller und häufiger in die Produktion überführt werden.

Docker

Seit seiner Einführung 2013 ist Docker fast zum Synonym für Container geworden und wird nach wie vor zum Erstellen von Container-Images verwendet. Die Docker-Umgebung umfasst eine Container-Laufzeit sowie Container-Build- und -Image-Management. Da Docker ein Container-Image nach OCI-Standard erstellt, werden Docker-Images in jeder OCI-kompatiblen Container-Laufzeit ausgeführt.

Kubernetes

Kubernetes ist ein Open-Source-Container-Orchestrator, der zum De-facto-Standard geworden ist. Kubernetes automatisiert Bereitstellung, Lastausgleich, Ressourcenzuweisung und Sicherheitsdurchsetzung für Container durch deklarative Konfiguration und Automatisierung. Container-Anwendungen werden weiterhin im gewünschten Zustand ausgeführt, sodass sie skalierbar und resilient sind. Container-Orchestrierung unterstützt das Management des komplexen Container-Lebenszyklus. Das ist vor allem für verteilte Anwendungen mit einer großen Anzahl von Containern wichtig.
Kubernetes wechselt zur Container Runtime Interface (CRI), die eine breitere Palette von Container-Laufzeiten mit reibungsloser Interoperabilität zwischen verschiedenen Laufzeiten unterstützt. Im Dezember 2020 wurde bekannt gegeben, dass Kubernetes die Docker-Laufzeit nicht mehr unterstützt.

Anwendungsbereiche für Container

Für Entwickler

  • Verbessern Sie die Portabilität von Anwendungen zwischen verschiedenen Plattformen und Konfigurationen, sodass Code, der mit einer bestimmten Version eines Sprach-Compilers oder -Interpreters entwickelt wurde, in späteren Versionen fehlerfrei und ohne Überarbeitung ausgeführt wird.
  • Entwicklung, Test und Bereitstellung müssen nicht mehr in derselben Infrastruktur stattfinden. Entwickler, die Code auf ihren Laptops schreiben, können sich darauf verlassen, dass Anwendungen auch in jeder anderen Infrastruktur wie gewünscht ausgeführt werden, ob auf einem On-Premises-Server oder einer cloudbasierten VM.
  • Vereinfachen Sie agile Entwicklungsprozesse wie CI/CD, um Codeakzeptanz und -bereitstellung zu beschleunigen.

Für IT-Betrieb

  • Verbessern Sie die Anwendungssicherheit durch einfache Isolation von anderen Anwendungen.
  • Migrieren Sie containerbasierte Anwendungen nahtlos über verschiedene Betriebssystemversionen, Netzwerktopologien, Storage-Konfigurationen oder Cloud-Plattformen hinweg.
  • Verbessern Sie die IT-Effizienz, indem Sie mehrere Anwendungs-Container in einer einzigen Betriebssysteminstanz ausführen. Im Gegensatz zu VMs mit zehn oder mehr Gigabyte sind Container oft nur einige zehn Megabyte groß. Daher kann eine wesentlich größere Anzahl von Containern in einer einzigen Serverinstanz ausgeführt werden.

Profitieren Sie von maximaler bedarfsorientierter Skalierbarkeit, indem Sie zusätzliche Container-Instanzen in Millisekunden statt Minuten bereitstellen.

Zugehörige Lösungen und Produkte

Anwendungsmodernisierung mit Kubernetes

Bereitstellen einer entwicklerorientierten Kubernetes-Lösung im Rechenzentrum oder in der Cloud

Container-Erstellung aus dem Quellcode für Kubernetes

VMware Tanzu Build Service automatisiert Container-Erstellung, -Management und -Governance im gesamten Unternehmen.

Multi-Cloud-Kubernetes-Management

VMware Tanzu Mission Control ist eine Multi-Cloud-Kubernetes-Managementplattform, die die Cloud virtualisiert. Die Lösung stellt eine konsistente Kubernetes-basierte Plattform bereit, um Anwendungen im jeweils erforderlichen Umfang in jeder Cloud verwalten, betreiben und verteilen zu können.