Container – eine Einführung

Container sind eine wichtige Technologie, die die Bereitstellung von Anwendungen und die Zusammenarbeit von Entwicklung und Operations revolutioniert. Wir führen Sie ins Thema ein.

Was sind Container?

Ein Container ist eine Softwareeinheit, die Code zusammen mit seinen benötigten Abhängigkeiten verpackt, um in einer isolierten, kontrollierten Umgebung ausgeführt zu werden. Dies ermöglicht eine zuverlässige, wiederholbare Ausführung von Anwendungen. Sie bieten effiziente Ressourcennutzung und klare Trennung von Anwendung und Infrastruktur.

Vorteile von Containern

  • Effiziente Ressourcennutzung: Geringerer Ressourcenverbrauch im Vergleich zu virtuellen Maschinen.
  • Klare Trennung von Anwendung und Infrastruktur: Entwickler können sich auf ihre Stärken konzentrieren.
  • Portabilität: Anwendungen laufen auf verschiedenen Maschinen konsistent.
  • Skalierbarkeit: Mehrere Container können als Anwendungsstapel ausgeführt werden.
  • Statelessness: Sie ermöglichen vorhersehbare, wiederholbare Ausführung.
  • Netzwerkkommunikation: Isolierte Container können miteinander und mit anderen kommunizieren.
  • Effiziente Protokollierung: Lösungen für das Logging erleichtern die Verwaltung.
  • Entkopplung von Anwendung und Infrastruktur: Klare Verantwortungstrennung.
  • Unterstützung für Mikroservices: Aufteilung von Anwendungen in kleinere Einheiten.
  • Geringer Ressourcenverbrauch: Containers sind leichtgewichtiger als virtuelle Maschinen.

Begrifflichkeiten

  • Betriebssystem
  • Kernel
  • Container
  • Container-Runtimes
  • Open Container Initiative (OCI)
  • Container Runtime Interface
  • Container-Image
  • Bildregistrierung
  • Bildrepository
  • Container-Engines
  • Container-Orchestrierung

Ziele

  • Portabilität: Konsistente Ausführung von Anwendungen auf verschiedenen Maschinen.
  • Effizienz: Minimierung des Ressourcenverbrauchs durch optimierte Nutzung von Hardware und Infrastruktur.
  • Statelessness: Vorhersehbare, wiederholbare Ausführung von Code ohne Abhängigkeit von vergangenen oder zukünftigen Ausführungen.
  • Netzwerkkommunikation: Isolierte Container ermöglichen die Interaktion zwischen Anwendungen.
  • Protokollierung: Effiziente Erfassung von Fehlern und Ausgaben.
  • Entkopplung von Anwendung und Infrastruktur: Klare Trennung der Verantwortlichkeiten.
  • Unterstützung für Mikroservices: Aufteilung von Anwendungen in kleinere, unabhängige Einheiten.
  • Anpassung an sich wandelnde Anforderungen: Container-Technologie entwickelt sich ständig weiter, um den Bedürfnissen der Benutzer gerecht zu werden.

Der Markt

Die meisten Engines verwenden eine Kombination von „runc“ als ihre OCI-Laufzeit in Verbindung mit „containerd“ als ihre CRI. Die Container-Landschaft wird derzeit von Docker dominiert. Der engste Konkurrent ist die Lösungsreihe von Red Hat, bestehend aus Podman, das die Laufzeit von Containern verwaltet; Buildah, das Containerbilder erstellt; und Skopeo, das eine Schnittstelle zwischen Containerbildern und Bildregistern darstellt.

Letztendlich hängen die Unterschiede zwischen diesen Lösungen davon ab, wie sie den Root-Zugriff handhaben und ihre Verwendung von Daemons. Docker erfordert Root-Zugriff, um zu funktionieren, was ein zusätzliches Sicherheitsrisiko darstellt. Docker erfordert auch, dass ein Daemon immer aktiv ist. Die Lösungsreihe von Podman erfordert keines von beiden.

Orchestration

Die nächste Stufe der Einführung der Container-Bereitstellung ist die Automatisierung. Die Container-Orchestrierung automatisiert viele Schritte, indem sie sich kontinuierlich auf einen idealen, definierten Zustand in einer Bereitstellung ausrichtet. Sie umfasst Bereitstellung, Konfiguration, Planung, Skalierung, Überwachung, Bereitstellung und mehr.

In diesem Bereich sind zwei prominente Akteure zu nennen: Docker mit Docker Compose und Docker Swarm-Modus sowie Kubernetes. In grober Reihenfolge der Komplexität ist Docker Compose eine Orchestrierungslösung, die sich mit Multi-Container-Bereitstellungen auf einem einzelnen Host befasst. Wenn mehrere Hosts beteiligt sind, ist der Docker Swarm-Modus erforderlich.

Kubernetes ist eine speziell entwickelte Orchestrierungslösung. Während die Orchestrierungslösungen von Docker gegenüber ihrem Fokus auf die Kernkomponenten von Containern ausgeglichen sind, ist Kubernetes auf Erweiterbarkeit und granulare Kontrolle in der Orchestrierung ausgerichtet. Dies führt zu einem Kompromiss, bei dem Kubernetes-Bereitstellungen komplexer sind.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: