Weltweit führend bei Datenresilienz
Hinweise von Veeam für Kunden, die vom Content-Update von CrowdStrike betroffen sind

Was sind Container?

Ein Container ist ein leichtes Paket, das den Code einer Anwendung und alle Bibliotheken und weiteren Abhängigkeiten enthält, die zur Ausführung benötigt werden. Der Zweck von Containern besteht darin, Entwicklern und Systemadministratoren eine schnelle Bereitstellung von Anwendungen zu ermöglichen. Container helfen, Konflikte und andere Abhängigkeitsprobleme zu vermeiden, die beim Debuggen mühsam sein können.

Von Containerisierung hört man vieles, vor allem in der Welt der App-Entwicklung und Microservices. Containerisierung bezieht sich darauf, dass Entwickler Anwendungen in Containern bündeln, um Benutzern die Bereitstellung zu erleichtern. Container sind benutzerfreundlich und besonders nützlich, um Anwendungen in der Cloud bereitzustellen, da sich der Container nicht um die Konfiguration der zugrunde liegenden Maschine kümmern muss.

Sichern und schützen Sie Daten in Ihrer Kubernetes-Bereitstellung mit Veeam Kasten.

Was ist der Unterschied zwischen Containern und virtuellen Maschinen (VMs)?

Einfach ausgedrückt ist ein Container ein Paket, das aus allem besteht, was Sie zum Ausführen einer Anwendung in einer bestimmten Umgebung benötigen. Der Hauptunterschied zwischen einem Container und einer VM besteht darin, was in den einzelnen Paketen enthalten ist.

Ein Container enthält eine Anwendung und alle Bibliotheken, von denen die Anwendung abhängt. Es läuft auf einem Betriebssystem auf. Im Gegensatz hierzu enthält eine virtuelle Maschine ein vollständiges Betriebssystem und wird auf einem Hypervisor ausgeführt. Container sind sehr schlank, können aber nicht mit der zugrunde liegenden Hardware kommunizieren und nur Anwendungen ausführen, die vom zugrunde liegenden Betriebssystem unterstützt werden. Virtuelle Maschinen haben größeren Zugriff auf die Hardware der Hostmaschine, und jedes Betriebssystem, das von dieser Hardware unterstützt wird, kann als VM ausgeführt werden. 

Der Nachteil von virtuellen Maschinen besteht darin, dass sie mehr Ressourcen benötigen. Anstatt einfach nur die Binärdateien zu laden, die für die gewünschte Anwendung benötigt werden, wird das vollständige Betriebssystem geladen.

Vorteile von Containern

Die Verwendung von Containern bietet mehrere potenzielle Vorteile gegenüber VMs und der Bereitstellung von Anwendungen direkt auf dem Host-Betriebssystem. 

  • Agilität: Anstatt Anweisungen zur Installation von Abhängigkeiten und zur Behebung von Konflikten mit anderen Anwendungen auf dem System freigeben zu müssen, können Entwickler einfach einen Container freigeben, der so eingerichtet ist, dass er einfach funktioniert. Jeder, der ein kompatibles Betriebssystem mit angemessener Hardware ausführt, kann diesen Container herunterladen und ausführen und verfügt über eine funktionierende Version der Anwendung.
  • Portabilität:  Da sich Container nicht um die Konfiguration des zugrunde liegenden Betriebssystems kümmern, können sie überall ausgeführt werden. Ein Entwickler kann eine Anwendung testen, für die eine bestimmte Serverkonfiguration erforderlich ist, ohne sich Gedanken darüber machen zu müssen, ob Unterschiede in seiner Entwicklungsumgebung Probleme verursachen könnten.
  • Skalierbarkeit:  Container sind besonders nützlich für Anwendungen, die mit einer Microservices-Architektur entwickelt werden. Entwickler können einzelne Dienste so konfigurieren, dass sie als Container ausgeführt werden, und diese Container können mithilfe von Tools wie Kubernetes bereitgestellt und verwaltet werden. Das Aufsetzen zusätzlicher Container für stark nachgefragte Dienste und deren Herunterfahren, wenn sie nicht mehr benötigt werden, ist eine effiziente Möglichkeit zur Skalierung von Webanwendungen, insbesondere im Vergleich zur einfachen Überbereitstellung von Hardware für eine monolithische Anwendung.
  • Resilienz:  Wenn Anwendungen in Containern ausgeführt werden, sind sie vom Rest des Betriebssystems isoliert. Container können zwar über Netzwerke und APIs miteinander kommunizieren, doch laufen sie in ihren eigenen, separaten Umgebungen. Wenn eine Anwendung, die in einem Container ausgeführt wird, abstürzt, sollte dies keine Auswirkungen auf andere Container haben. Darüber hinaus können Container-Management-Systeme verwendet werden, um Container bei Bedarf herunterzufahren und neu zu starten, damit Anwendungen reibungslos laufen.

Arten von Containern

Es gibt viele Arten der Virtualisierung. Die meisten Leute meinen in der Regel Anwendungsvirtualisierung, wenn sie von Containern sprechen. Bei dieser Art der Virtualisierung wird der Anwendung innerhalb des Containers vorgegaukelt, direkt mit dem Betriebssystem zu interagieren, während sie in Wirklichkeit mit einer Container-Engine oder einer Virtualisierungsebene kommuniziert.

Anwendungsvirtualisierung bietet eine Abstraktionsschicht, mit der Anwendungen auf einem Betriebssystem ausgeführt werden können, für das sie nicht entwickelt wurden. Es können auch Anwendungen mit inkompatiblen Abhängigkeiten ausgeführt werden, da jeder Anwendung Zugriff auf die benötigten Bibliotheken gewährt werden kann, ohne dass es zu Konflikten mit der anderen Anwendung kommt.

Zusätzlich zur Anwendungsvirtualisierung können Container auch die Virtualisierung auf Betriebssystemebene nutzen. Beispiele für eine Virtualisierung auf Betriebssystemebene sind OpenVZ, Solaris-Container, chroot jails und LXC. Docker-Container können auch als Beispiel für die Virtualisierung auf Betriebssystemebene betrachtet werden. Bei dieser Art der Virtualisierung lässt der Kernel mehrere User-Space-Instanzen zu, die voneinander isoliert sind. Chroot-Gefängnisse werden oft auf diese Weise als Sicherheitsmaßnahme eingesetzt. OpenVZ wird häufig verwendet, um virtuelle private Server bereitzustellen. Dies ermöglicht im Wesentlichen die Aufteilung eines Linux-Servers in mehrere kleinere Server, ohne virtuelle Maschinen ausführen zu müssen, die zusätzliche Ressourcen und Performance-Overhead mit sich bringen.

Virtuelle Maschinen verwenden in der Regel eher eine Hardwarevirtualisierung. Mit Hardwarevirtualisierung ist es möglich, eine komplette physische Maschine zu spiegeln. Jedes Gastbetriebssystem geht davon aus, direkt mit der zugrunde liegenden Hardware zu kommunizieren, obwohl es tatsächlich mit einem Hypervisor kommuniziert, der auf der Hardware selbst oder in einem Host-Betriebssystem laufen kann. Hypervisoren sind für das Ressourcenmanagement zuständig und können festlegen, wie viel Arbeitsspeicher-/Prozessorzeit jeder VM zu einem bestimmten Zeitpunkt zur Verfügung steht.

Anwendungsfälle für Container

Container eignen sich sowohl für Entwicklungs- als auch für Produktionsumgebungen. Aufgrund ihrer Portabilität sind sie für DevOps und CI/CD-Anwendungen nützlich, während sie aufgrund ihrer Agilität und Skalierbarkeit gleichermaßen für Microservices und Cloud-Bereitstellungen geeignet sind. Im Folgenden finden Sie unter anderem einige Beispiele für reale Container-Anwendungsfälle. 

Microservices-Architektur

Der Einsatz einer Microservices-Architektur ermöglicht es, komplexe Anwendungen schnell zu entwickeln und effektiv zu skalieren. Zahlreiche große Webanwendungen verwenden heute eine Microservices-Architektur, darunter einige der am häufigsten verwendeten Services, die von Google angeboten werden. Container sind ein wichtiger Bestandteil von Microservices. Jeder Dienst wird als separater Container ausgeführt, der von einem Tool wie Kubernetes verwaltet wird. Diese Container kommunizieren über REST-APIs miteinander, wobei ein API-Gateway als Vermittler dient, um die Kommunikation zu erleichtern.

DevOps und CI/CD

Container sind ein wertvoller Bestandteil jedes CI/CD-Workflows. Wenn Entwickler Änderungen am Code einer Anwendung vornehmen und diese Änderungen bestätigen, können die CI/CD-Tools ausgelöst werden, um alle Containerimages zu aktualisieren und Tests auszuführen. Dies kann das Feedback zu Codeänderungen beschleunigen und zuverlässigere Ergebnisse als bei Durchführung der Tests auf dem Computer des Testers sicherstellen, da dieser Computer möglicherweise anders konfiguriert ist als die Umgebung, die der Entwickler verwendet hat.

Hybrid-/Multi-Cloud-Umgebungen

Viele Unternehmen nutzen inzwischen eine Multi-Cloud-Umgebung mit mehreren verschiedenen Cloud-Serviceprovidern. Andere Unternehmen verwenden eine Hybrid-Cloud-Einrichtung mit einer Kombination aus lokalen und cloudbasierten Lösungen. Das Verwalten von Anwendungen in diesen Umgebungen ist nicht immer einfach. Container bieten eine praktische Lösung, denn sie enthalten alles, was die Anwendung zum Ausführen benötigt. Anstatt Zeit mit dem Einrichten von Servern, dem Installieren von Bibliotheken und dem Verwalten komplexer Konfigurationen für jeden Cloud-Server zu verbringen, muss die Arbeit nur einmal erledigt werden, und dann kann der Container in der gewünschten Umgebung bereitgestellt werden.

Anwendungsentwicklung und -bereitstellung

Container sind nützlich für die Entwicklung und Bereitstellung von Anwendungen. Viele Entwickler stellen ihre Anwendungen als Container bereit, damit sie einfach getestet und bereitgestellt werden können. Sie bieten auch Container an, die Entwickler für ihre Arbeit verwenden können. Das beliebte Open-Source-Projekt Nextcloud schlägt Entwicklern beispielsweise vor, Docker-Container zur Verwaltung ihrer Entwicklungsumgebung zu verwenden.

Tools für die Containerisierung

Die Containerisierung ist keine neue Technologie, hat aber in den letzten Jahren an Popularität gewonnen. Software, wie z.B. LXC, gibt es schon sehr lange für Linux. Die Einrichtung war jedoch komplex und aufgrund dieser Einstiegshürde wurde es nur von relativ erfahrenen Systemadministratoren und Entwicklern genutzt.

Docker revolutionierte Container, da sie jetzt von beinahe jedem ausgeführt werden können. Darüber hinaus stellt der Anbieter Tools wie Docker Hub bereit, mit dem Benutzer Container zum Herunterladen und Ausführen freigeben können.

Docker selbst ist recht flexibel und leistungsstark, aber die Verwaltung einer großen Anzahl von Containern über die Befehlszeile ist nicht einfach, und die Verwaltung von Containern über mehrere Cloud-Hosts hinweg ist noch schwieriger. Container-Management-Lösungen wie Kubernetes unterstützen die Verwaltung von Containern und das Monitoring ihrer Integrität.

Docker basiert auf der Open Container Initiative, und es sind viele weitere Container- und Container-Management-Lösungen verfügbar. Beispielsweise bietet Podman Features für die Verwaltung von Containern für Docker und andere OCI-kompatible Container-Lösungen an. 

Herausforderungen und Einschränkungen von Containern

Zwar sind Container leistungsstark und flexibel, doch vor der Bereitstellung containerbasierter Lösungen gibt es einige Herausforderungen und potenzielle Probleme zu berücksichtigen.

  • Ressourcenbeschränkungen: Container sind zwar schlanker als virtuelle Maschinen, können jedoch im Vergleich zur Ausführung einer Anwendung direkt auf dem Host weiter einen gewissen Overhead bedeuten. Stellen Sie sich vor, Sie möchten eine Web-App ausführen, die auf dem LAMP-Stack auf Ihrem Computer basiert. Wenn es bereits einen funktionierenden Webserver und eine Datenbank-Engine auf Ihrem Computer gibt, könnten Sie ihn als virtuellen Host bereitstellen und auf Ihrem vorhandenen Server ausführen. Wenn Sie es als Docker-Container bereitstellen, führen Sie eine zusätzliche Kopie von Apache, PHP und MySQL/MariaDB aus. Im Kleinen spielt dieser Mehraufwand vielleicht keine Rolle, aber je mehr Container Sie bereitstellen, desto deutlicher macht er sich bemerkbar.
  • Hardwarezugriff: Docker-Container können im Unterschied zu virtuellen Maschinen nicht auf die zugrunde liegende Hardware zugreifen. Dies spielt möglicherweise keine Rolle, wenn Sie einen einfachen Microservice ausführen. Es macht jedoch die Verwendung von Containern für Anwendungen überflüssig, für die ein Zugriff auf niedrigerer Ebene erforderlich ist.
  • Mangelnde Standardisierung:  Es gibt mehrere Container-Engines, die nicht alle den OCI-Standards entsprechen. Diese mangelnde Standardisierung kann für viele Unternehmen problematisch sein. Die Auswahl eines einzelnen Container-Standards und dessen Anwendung auf alle internen Container ist vergleichsweise einfach für IT-Teams. Die Einrichtung von Lösungen für die Verwaltung von Containern kann jedoch schwierig sein, wenn sie mit Drittanbietern zusammenarbeiten, die einen anderen Standard anwenden.
  • Sicherheitsbedenken: Container sind nicht ganz so isoliert wie virtuelle Maschinen. Sie bieten eine gewisse Isolierung im Vergleich zum direkten Ausführen einer Anwendung auf dem zugrunde liegenden Betriebssystem, aber es bestehen immer noch einige Risiken in Bezug auf die Rechteausweitung. Es ist wichtig, sich die nötige Zeit für die Sicherung von Docker- oder anderen Container-Repositorys zu nehmen, bei der Gewährung von Zugriff auf das zugrunde liegende Dateisystem für Docker vorsichtig zu sein und sicherzustellen, dass Container niemals als Root ausgeführt werden. Wenn Sie diese Vorsichtsmaßnahmen befolgen, sollten viele der potenziellen Probleme mit Containern entschärft werden.

Erste Schritte mit Veeam

Wenn Sie Container in Ihren Entwicklungs-/DevOps- oder Anwendungsbereitstellungen verwenden, ist die Sicherung Ihrer Daten von entscheidender Bedeutung. Veeam bietet verschiedene Optionen für Datensicherung, -wiederherstellung und -sicherheit in cloudbasierten, lokalen und hybriden Umgebungen an.

Unsere Tools funktionieren mit einer Vielzahl von Container-Lösungen und sind so konzipiert, dass sie sich nahtlos in Ihren bestehenden Workflow integrieren lassen. Wenn Sie sie vor dem Kauf ausprobieren möchten, nutzen Sie unsere kostenlosen Testversionen. Wir bieten sogar eine Community-Edition unserer Veeam Kasten-Lösung für Kubernetes an. Mit dieser Edition können auch kleinere Unternehmen mit maximal fünf Instanzen ihre Daten schützen.

Wenn Sie nicht sicher sind, welche Lösung Ihren Anforderungen am besten entspricht, oder wenn Sie Unterstützung bei der Einrichtung unserer Tools für Datensicherung und Wiederherstellung benötigen, rufen Sie uns an. Unser Team berät Sie gerne und hilft Ihnen beim Einstieg.

Wenn Sie in Ihrer Umgebung Container verwenden, sollten Sie Ihre Daten mit Veeam Kasten von Veeam schützen. Laden Sie noch heute Ihre kostenlose Testversion herunter. 

 

Ausgewählte Ressourcen

Datensicherung

Report „Trends bei der Datensicherung 2022“

Der umfassendste Branchenreport zum Thema Datensicherung, basierend auf einer Umfrage unter mehr als 3.000 IT-Führungskräften

Partner-Symbol

Demo anfordern

Erfahren Sie in einer Live-Session, wie Sie Ihre Datensicherung modernisieren

Kontakt-Symbol

Kontakt

Erhalten Sie Unterstützung bei der Wahl der richtigen Lösung für Ihr Unternehmen