Jump to section

Was ist Docker? Welche Vorteile bietet Containerisierung?

URL kopieren

2024 Global Tech Trends

Die schnelle Digitalisierung in der Technologiewelt hat dazu geführt, dass Organisationen teilweise andere Hauptbereiche ihres Unternehmens priorisieren. In der 10. Ausgabe unseres Berichts „Global Tech Trends 2024“ untersuchen wir Insights aus der Branche, Prioritäten und kritische Hindernisse.

Report lesen: Global Tech Trends 2024

Der Begriff „Docker" wird vielfältig verwendet und kann sich auf das Open-Source-Community-Projekt, Tools aus dem Open Source-Projekt oder direkt auf das Unternehmen Docker Inc. beziehen. Die Tatsache, dass die Technologien und das Unternehmen denselben Namen tragen, kann verwirrend sein.

Eine kurze Erklärung dazu:

  • Die IT-Software „Docker" ist eine Containerisierungstechnologie, mit der Sie Linux®-Container erstellen und verwenden können.
  • Die Open-Source-Docker-Community arbeitet an der Verbesserung dieser Technologien zum Vorteil der Nutzenden.
  • Das Unternehmen Docker Inc. baut auf der Arbeit der Docker-Community auf, sorgt für mehr Sicherheit und teilt diese Verbesserungen wiederum mit der gesamten Community. Es unterstützt dadurch die verbesserten und gehärteten Technologien für Unternehmenskunden.

Mit Docker können Sie Container wie extrem schlanke, modulare virtuelle Maschinen behandeln. Und mit diesen Containern erhalten Sie Flexibilität – Sie können sie erstellen, einsetzen, kopieren und zwischen Umgebungen verschieben, was wiederum die Optimierung Ihrer Apps für die Cloud unterstützt.

Die Docker-Technologie verwendet den Linux-Kernel und seine Funktionen wie Cgroups und Namespaces, um Prozesse zu isolieren, damit diese unabhängig voneinander ausgeführt werden können. Diese Unabhängigkeit ist der Zweck der Container – die Fähigkeit, mehrere Prozesse und Apps getrennt voneinander ausführen zu können. So wird Ihre Infrastruktur besser genutzt und gleichzeitig die Sicherheit bewahrt, die sich aus der Arbeit mit getrennten Systemen ergibt.

Container-Tools, einschließlich Docker, arbeiten mit einem imagebasierten Deployment-Modell. Dies erleichtert die gemeinsame Nutzung einer Anwendung oder einer Reihe von Services mit sämtlichen Abhängigkeiten in verschiedenen Umgebungen. Docker automatisiert auch das Deployment der Anwendung (oder kombinierter Sets von Prozessen, aus denen eine Anwendung besteht) innerhalb dieser Container-Umgebung.

Diese Tools bauen auf Linux-Containern auf – was Docker benutzerfreundlich und besonders macht – und geben den Nutzenden so nie dagewesenen Zugriff auf Anwendungen. Sie ermöglichen ein deutlich schnelleres Deployment und eine verbesserte Kontrolle von Versionen sowie deren Verbreitung.

Obwohl sie manchmal verwechselt werden, ist Docker nicht dasselbe wie ein traditioneller Linux-Container. Die Docker-Technologie war ursprünglich auf die LXC-Technologie aufgesetzt – was meistens mit „traditionellen" Linux-Containern assoziiert wird; sie hat sich aber seitdem von dieser Abhängigkeit befreit. LXC war nützlich als schlanke Virtualisierung, bot allerdings kein großartiges Entwickler- oder Benutzererlebnis. Die Docker-Technologie bietet mehr als die Fähigkeit, Container auszuführen – sie vereinfacht auch den Prozess der Erstellung und des Aufbaus von Containern sowie den Versand von Images und unter anderem auch der Versionierung von Images.

Traditional Linux containers vs. Docker

Traditionelle Linux-Container verwenden ein Init-System, das mehrere Prozesse verwalten kann. Das bedeutet, dass ganze Anwendungen als ein einziger Prozess ausgeführt werden können. Die Docker-Technologie unterstützt jedoch die Aufschlüsselung von Anwendungen in ihre einzelnen Prozesse und stellt hierzu die entsprechenden Tools bereit. Dieser detaillierte Ansatz hat seine Vorteile.

Modularität

Der Docker-Ansatz zur Containerisierung konzentriert sich auf die Möglichkeit, einen Teil einer Anwendung zu aktualisieren oder zu reparieren, ohne die gesamte Anwendung deaktivieren zu müssen. Zusätzlich zu diesem auf Microservices basierenden Ansatz können Sie Prozesse für mehrere Anwendungen freigeben, ähnlich wie es bei der serviceorientierten Architektur (SOA) der Fall ist.

Schichten und Image-Versionskontrolle

Eine Docker-Image-Datei besteht aus mehreren Schichten, die zu einem einzigen Image kombiniert werden. Wenn sich das Image ändert, wird eine Schicht erstellt. Jedes Mal, wenn Nutzende einen Befehl wie Ausführen oder Kopieren angeben, wird eine neue Schicht erstellt.

Mit Docker werden diese Schichten für neuer Container wiederverwendet, was die Entwicklung enorm beschleunigt. Zwischenzeitliche Änderungen werden auf alle Images verteilt, was die Geschwindigkeit, die Größe und die Effizienz weiter verbessert. Zum Layering gehört auch die Versionskontrolle: Jedes Mal, wenn es eine neue Änderung gibt, haben Sie im Grunde ein eingebautes Änderungsprotokoll, das Ihnen die volle Kontrolle über Ihre Container-Images gibt.

Rollback

Das Beste am Layering ist wahrscheinlich das Rollback, also das Zurücksetzen auf die vorherige Version. Jedes Image hat Schichten. Sie sind mit der aktuellen Iteration eines Image nicht zufrieden? Setzen Sie es einfach zurück auf die vorherige Version. Dieser Ansatz unterstützt eine agile Entwicklung und sorgt, was die Tools angeht, für eine kontinuierliche Integration und Bereitstellung (Continuous Integration/Continuous Deployment, CI/CD).

Schnelle Bereitstellung

Neue Hardware bereitzustellen und zum Laufen zu bringen, dauerte normalerweise Tage und war mit einem enormen Aufwand verbunden. Mit Docker-basierten Containern kann die Bereitstellung auf Sekunden reduziert werden. Indem Sie für jeden Prozess einen Container erstellen, können Sie diese Prozesse schnell mit neuen Apps teilen. Und da zum Hinzufügen oder Verschieben eines Containers das Betriebssystem nicht gebootet werden muss, sind die Bereitstellungszeiten wesentlich kürzer. In Verbindung mit kürzeren Bereitstellungszeiten können Sie die von Ihren Containern erzeugten Daten problemlos und kostengünstig erstellen und vernichten.

Die Docker-Technologie ist also ein detaillierter, kontrollierbarer, auf Microservices basierter Ansatz, der deutlich effizienter ist.

Analystenreport: Zehn Fakten, die Führungskräfte über Kubernetes und Container wissen müssen

Dieser Bericht erläutert, was bei der Einführung von Kubernetes zur Orchestrierung von containerisierten Anwendungen zu beachten ist.

Docker selbst kann einzelne Container verwalten. Wenn Sie beginnen, mehr und mehr Container und containerisierte Apps zu verwenden, die in Hunderte von Bestandteilen zerlegt sind, können die Verwaltung und Orchestrierung schwierig werden. Irgendwann müssen Sie einen Schritt zurückgehen und Container gruppieren, um Services wie Vernetzung, Sicherheit, Telemetrie usw. in all Ihren Containern bereitzustellen. Und genau hier kann Kubernetes helfen.

 

Mit Docker erhalten Sie nicht dieselben UNIX-ähnlichen Funktionen, die traditionelle Linux-Container bieten. Dazu gehört die Möglichkeit, Prozesse wie cron oder syslog innerhalb des Containers neben Ihrer Anwendung zu verwenden. Es gibt auch Einschränkungen beim Säubern von um zwei Ebenen untergeordneten Prozessen nach dem Beenden von untergeordneten Prozessen – etwas, das traditionelle Linux-Container grundsätzlich beherrschen. Dem kann abgeholfen werden, indem die Konfigurationsdatei geändert wird und diese Fähigkeiten von Anfang an eingerichtet werden – etwas, das nicht sofort auf den ersten Blick offensichtlich ist.

Darüber hinaus gibt es andere Linux-Subsysteme und -Geräte, die nicht mit einem Namespace versehen sind. Dazu gehören SELinux, Cgroups und /dev/sd*-Geräte. Wenn ein Angreifer also die Kontrolle über diese Untersysteme erlangt, ist der Host gefährdet. Um Komplexität zu vermeiden, werden die Host-Kernels gemeinsam mit den Containern verwendet, und dadurch entsteht eine Sicherheitslücke. Im Gegensatz dazu sind virtuelle Maschinen viel stärker vom Host-System getrennt sind.

 

Auch der Docker Daemon kann Sicherheitsbedenken verursachen. Um Docker-Container zu verwenden und auszuführen, nutzen Sie höchstwahrscheinlich den Docker Daemon, eine persistente Runtime für Container. Da der Docker Daemon Root-Berechtigungen benötigt, muss besonders darauf geachtet werden, wer Zugriff auf diesen Prozess erhält und wo sich der Prozess befindet. Ein lokaler Daemon hat beispielsweise eine geringere Angriffsfläche als ein Daemon, der sich an einem öffentlicheren Ort befindet, wie etwa auf einem Webserver.

Weiterlesen

ARTIKEL

Vergleich zwischen Containern und VMs

Linux-Container und virtuelle Maschinen (VMs) sind paketierte Computing-Umgebungen, die verschiedene IT-Komponenten vereinen und vom Rest des Systems isolieren.

ARTIKEL

Was ist Container-Orchestrierung?

Mithilfe der Container-Orchestrierung werden Deployment, Management, Skalierung und Vernetzung von Containern automatisiert.

ARTIKEL

Was ist ein Linux-Container?

Ein Linux-Container besteht aus Prozessen, die vom System isoliert sind und auf einem eigenen Image ausgeführt werden, das alle benötigten Dateien zur Unterstützung der Prozesse bereitstellt.

Mehr über Container erfahren

Produkte

Eine Plattform, die es Ihnen ermöglicht, Unternehmensanwendungen schnell und effizient über die von Ihnen gewünschte Infrastruktur bereitzustellen.

Ressourcen

Training

Kostenloser Trainingskurs

Running Containers with Red Hat Technical Overview

Kostenloser Trainingskurs

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Kostenloser Trainingskurs

Developing Cloud-Native Applications with Microservices Architectures