Docker

Was ist Docker?

Die Docker-Plattform basiert auf Open Source-Technologie und bietet Entwicklern die Möglichkeit, Anwendungen in Containern zu entwickeln, so dass diese während der Entwicklung einfacher modifiziert und aktualisiert werden können.

Warum nutzen Entwickler Docker?

Docker ermöglicht Entwicklern, Anwendungen in einer virtualisierten Umgebung zusammenzustellen und auszuführen, die als Container bezeichnet wird.. Dank dieser Isolation und Sicherheit können mehrere Container unabhängig voneinander gleichzeitig auf einem einzelnen Host-System ausgeführt werden. Docker bietet die Tools und die Plattform zur Verwaltung der Container-Lebenszyklen.

Welche Vorteile bietet Docker?

Docker wurde 2013 eingeführt und förderte die Popularität von Containerisierungen in der Software-Entwicklung. Docker vereinfacht das Entwickeln, Austauschen und Betreiben containerisierter Anwendungen. Ein neuer Container kann innerhalb von Minuten eingerichtet werden, einschließlich aller Anwendungsabhängigkeiten. Die containerisierten Anwendungen sind hochgradig portierbar und können an jedem Ort und innerhalb jeder Infrastruktur ausgeführt werden.

Warum sind Container hilfreich?

Container sind wenig systembelastend, enthalten alles, was für die Ausführung der Anwendung erforderlich ist, und abstrahieren die Software von der Host-Infrastruktur. Darüber hinaus sind die Container voneinander isoliert, wodurch die Systemstabilität insgesamt verbessert wird. Sie bieten die Möglichkeit, große Projekte zwischen mehreren Entwicklungsteams aufzuteilen. Somit wird die Arbeitslast verteilt und die Entwicklung beschleunigt.

Wie funktioniert Docker?

Docker nutzt mehrere Funktionen des Linux-Kernels, um seine Funktionalität bereitzustellen. Zur Bereitstellung von Containern werden Namespaces genutzt. Wenn Sie einen Container ausführen, erstellt Docker eine Reihe von Namespaces für diesen Container. Diese Namespaces liefern eine Isolationsebene für die Container. Jeder Aspekt eines Containers wird in einem separaten Namespace ausgeführt, und der Zugriff auf diesen Namespace ist beschränkt.

Im Gegensatz zu virtuellen Maschinen (VMs), die Host-Systemressourcen auf Hardware-Ebene abstrahieren, erfolgt dies bei Docker auf der Betriebssystem-Ebene (BS). Durch Virtualisierung auf dieser Ebene sind die Instanzen weniger systembelastend und schneller als VMs.

Warum Docker?

Docker vereinfacht und beschleunigt die Software-Entwicklungs-Workflows. Es bietet Entwicklern die Freiheit, Innovationen mithilfe ihrer eigenen Auswahl an Tools, Anwendungs-Stacks und Entwicklungsumgebungen entsprechend der besonderen Anforderungen jedes Projekts zu entwickeln.

Da Docker wenig systembelastend und schnell ist, können mehr Workloads auf demselben Host-System ausgeführt werden als mit Hypervisor-basierten VMs. Es ist gut geeignet für Umgebungen mit hoher Dichte sowie für kleine und mittlere Bereitstellungen, bei denen Sie mit weniger Ressourcen mehr bewirken müssen.

Die containerbasierte Plattform von Docker ermöglicht hochgradig portierbare Workloads. Docker-Container können auf einem lokalen Entwicklergerät, auf physischer Hardware in einem lokalen oder Colocation-Rechenzentren, auf VM-Instanzen, auf einer Public Cloud-Plattform oder in einer hybriden Umgebung ausgeführt werden. Diese Portierbarkeit vereinfacht die dynamische Verwaltung von Workloads sowie die bedarfsgerechte-Skalierung von Anwendungen entsprechend den Geschäftsanforderungen in Echtzeit.

Mit Docker können Entwickler lokale Umgebungen einrichten, die denen auf Live-Servern entsprechen, und mehrere Entwicklungsumgebungen mit unterschiedlichen Konfigurationen betreiben. Software-Tests können schnell erfolgen, um zu überprüfen, ob neue Änderungen in verschiedenen Umgebungen und Bedingungen korrekt funktionieren. So werden kontinuierliche Verbesserungs-/Entwicklungsziele (CI/CD) unterstützt.

Sie bieten die Möglichkeit, große Entwicklungsprojekte zwischen mehreren kleinen agilen -Teams aufzuteilen. Somit werden die Arbeitslast verteilt und die Entwicklung beschleunigt. Solche effizienten DevOps-Workflows können Unternehmen dabei unterstützen, Software häufiger bereitzustellen, Fehler schneller zu beheben und die Fehlerquoten bei Änderungen zu senken.

Wie wird Docker bereitgestellt und orchestriert?

Die Benutzer interagieren über einen Client mit Docker. Dieser Client kommuniziert mit einem Hintergrund-Prozess, der die Container auf dem Host-System verwaltet, das als Docker Daemon bezeichnet wird. Der Daemon überwacht alle Aspekte im Zusammenhang mit der Docker-Umgebung. 

Die Docker Engine, der Kern des Systems, ist eine Anwendung, die eine Client-Server-Architektur nutzt und auf einem Host-Rechner installiert ist. Der Host stellt die Umgebung zum Ausführen der Anwendungen bereit. Er enthält den Docker Daemon sowie die folgenden Docker-Objekte:

  • Images sind binäre Vorlagen mit reinem Lesezugriff, die zur Container-Entwicklung verwendet werden. Ihre Metadaten beschreiben die Containerfunktionen und -anforderungen. Ein Image kann separat verwendet werden, um einen Container aufzusetzen, oder es kann angepasst werden, um weitere Elemente hinzuzufügen und die aktuelle Konfiguration zu erweitern. Container-Images können innerhalb eines Unternehmens oder öffentlich freigegeben werden und ermöglichen die Zusammenarbeit zwischen Entwicklern.
  • Container werden durch ihr Image und alle zusätzlichen Konfigurationsoptionen definiert, die beim Start bereitgestellt werden (z. B. Netzwerkverbindungen und Datenspeicher-Optionen). Container können nur auf Ressourcen zugreifen, die im Image definiert sind, sofern bei der Integration des Image in einen Container kein zusätzlicher Zugriff definiert wurde.
  • Netzwerke lassen die Kommunikation zwischen isolierten Containern zu.
  • Die Speicherung von Daten in einem Container erfolgt standardmäßig nicht persistent und erlischt, sobald der Container nicht mehr ausgeführt wird. Docker bietet jedoch Optionen, beispielsweise in Form von Daten-Volumes und Storage-Plugins, die eine Übertragung oder persistente Speicherung der Daten ermöglichen.

Der Docker-Client und der Daemon können auf demselben System ausgeführt werden, oder ein Docker-Client kann an einen Remote-Docker-Daemon angebunden werden. Ein Docker-Client kann ebenfalls mit mehr als einem Docker-Daemon kommunizieren. Docker-Cient und Docker-Daemon kommunizieren mithilfe einer REST API, über UNIX-Sockets oder eine Netzwerk-Schnittstelle.

Wie wird Docker eingesetzt?

Da Docker Workflows vereinfacht und beschleunigt, bietet es mehrere Vorteile für Software-Entwicklungs-Teams. Es gibt jedoch bestimmte Szenarien, in denen der Nutzen besonders groß ist.

Nutzung einer Mikroservice-Architektur

Viele Unternehmen möchten ihre vorhandenen monolithischen Anwendungen im Rahmen ihrer digitalen Transformation ersetzen. Während eine monolithischen Anwendung als einzelne Einheit fungiert, besteht eine Microservice-Architektur aus einer Zusammenstellung kleinerer unabhängiger Einheiten. Docker ermöglicht die Containerisierung dieser Microservices und vereinfacht ihre Bereitstellung und Verwaltung. Durch Containerisierung werden einzelne Microservices mit ihren eigenen isolierten Workload-Umgebungen bereitgestellt, so dass diese unabhängig implementierbar und skalierbar sind.

Vorhandene ältere Anwendungen in Container verschieben

Für Anwendungen, die nicht als Microservices neu angelegt werden können, besteht die Möglichkeit, sie in ihrer aktuellen Form in Container zu verschieben. Docker zur Containerisierung dieser Anwendungen zu nutzen, gestaltet Entwicklung und Test effizienter, vereinfacht Bereitstellung und Disaster Recovery und ermöglicht das Ausführen mehrerer Instanzen der älteren Anwendung, ohne dass Konflikte mit neueren Anwendungen entstehen.

Maschinelles Lernen (ML) bereitstellen

Das Bereitstellen von trainierten Modellen innerhalb der Produktionsumgebung und in großem Maßstab ist eine der größten Herausforderungen bei Entwicklungen im Bereich des maschinellen Lernens. Docker vereinfacht die Entwicklung und die Bereitstellung von ML-Anwendungen, indem Plattformen wie TensorFlow zur GPU-Unterstützung genutzt werden. Die Distribution von ML-Anwendungen wird ebenfalls optimiert, indem Container auf mehreren Maschinen oder über die Cloud verteilt und mithilfe von Orchestrierungstechnologie verwaltet werden.

Server-Konsolidierung

In ähnlicher Weise wie bei VMs ermöglichen die Funktionen zur Anwendungsisolierung von Docker Unternehmen Kosteneinsparungen durch das Konsolidieren mehrere Server. Ohne die Belastung durch das Ausführen mehrerer Betriebssysteme (wie dies in einer VM-Umgebung erforderlich ist) bietet Docker eine dichtere Server-Konsolidierung als dies mit VMs möglich ist.

HPE Lösungen mit Docker

Die Docker Enterprise Edition von HPE ist ein kommerziell unterstütztes Abonnement-Paket mit den erforderlichen Komponenten für die Implementierung von Containern in jeder Umgebung. Die Basic Edition von Docker beinhaltet die Container Engine und die Orchestrierung. Die Standard Edition bietet mehrere Ebenen der Bild- und Zugriffsverwaltung, die Advanced Edition bietet Ihnen sogar Sicherheitsprüfungen und eine Schwachstellenüberwachung.

Nutzen Sie die Einfachheit und Ausfallsicherheit von HPE Storage und beginnen Sie mit der Bereitstellung persistenter Volumes mithilfe weniger Befehle. HPE Nimble Storage und HPE 3PAR All-Flash-, Hybrid- und Sekundär-Flash-Arrays liefern die für Containerumgebungen erforderliche Leistung sowie Skalierbarkeit.

HPE Ezmeral Runtime ist eine einheitliche, auf dem Open Source-System Kubernetes aufbauende Containerplattform für Cloud-native und nicht Cloud-native Anwendungen, die in jeder lokalen Infrastruktur, in mehreren Public Clouds, in einem Hybrid-Modell oder am Edge ausgeführt werden können.

Diese Plattform kann mit HPE GreenLake als Service mit einem nutzungsabhängigen Bezahlmodell bereitgestellt werden. HPE Techniker führen die Installation und Konfiguration durch, und HPE bietet das komplette Management Ihrer Lösung, eine zentrale Anlaufstelle für den Support und ein technisches Team, das Ihre Umgebung und Ihr Geschäft kennt. Mit einem standardisierten Hardware- und Software-Build vermeiden Sie eine kostspielige manuelle Bereitstellung. Außerdem können Sie die Lösung in nur 14 Tagen in Ihr Rechenzentrum liefern lassen.