Lastausgleich und Skalierbarkeit
= 1. Allgemein =
Die Skalierbarkeit und der Lastausgleich sind zwei entscheidende Aspekte in It-Systemen. Skalierbarkeit bezieht sich auf die Fähigkeit eines Systems, mit steigender Last oder Anforderungen umzugehen, ohne dass die Leistung beeinträchtigt wird. D.h. die IT-Infrastruktur ist ggf. flexibel anzupassen und zu erweitern, um mit dem Wachstum und den Anforderungen an die IT Schritt zu halten. Skalierbarkeit bezeichnet die Fähigkeit eines Systems, wachsende quantitative Anforderungen durch Hinzuügen von Ressourcen auszugleichen, ohne dass eine Änderung von Systemkomponenten notwendig wird. Zentrale Lösungen stoßen hier in der Regel schnell an ihre Grenzen( .z.B.Bestell- oder Buchungssysteme) [11]
Der Lastausgleich hingegen verteilt die Arbeitslast gleichmäßig auf mehrere Ressourcen, um die Leistung und Verfügbarkeit zu verbessern und Ausfälle zu vermeiden.
1.1 Skalierung
- Skalierung von einem Serversystem ist notwendig, da der Server ein Bottleneck und Single Point of Failure ist. Ein Client kann bei Systemen mit mehreren Servern auf verschiedene Weisen an die Daten
kommen: [12]
• rekursiv --> Client fragt einen Server, dieser fragt rekursiv andere Server.etc., etc. bis der Zielserver erreicht ist, der Client erhält die Antwort vom befragten Server
• transitiv --> Client bekommt die Antwort direkt vom Zielserver - Server können klassifiziert werden als:
• Proxy --> Schnittstelle zwischen Client und anderen Servern, die die Anfragen cached, geeignet für sich wiederholende Anfragen
• Broker --> Teilt Clients einem Server entsprechend der geforderten Aufgaben zu
– Vorteil: Location/Replication transparency
– Nachteil: Single-Point-Of-Failure
• Trader --> wählt den passenden Server aus, falls mehrere Server denselben Service in unterschiedlicher Qualität anbieten
• Balancer --> Verteilt Workload gleichmäßig auf alle Server
• Agent --> Splittet komplexe Anfragen auf, sendet die simpleren Anfragen an andere Server und kombiniert die Antworten zu einer Antwort
1.1.1 Web-Caching
Web-Caching dient der Skalierbarkeit und bereitet geringe Latenz.Das definierende Merkmal aller Web-Caches ist, dass sie HTTP-Caching-Metadaten transparent als Read-Through-Caches interpretieren. Das bedeutet, dass bei einem Cache-Miss die Anfrage an den nächsten Cache oder den Ursprungsserver
weitergeleitet und dann die Antwort gemäß der bereitgestellten TTL zwischengespeichert wird. Web-Caches leiten immer Schreibanfragen weiter, da diese in Form von undurchsichtigen POST, PUT und DELETE-Anfragen kommen, deren Semantik implizite Eigenschaften einer REST/HTTP-API sind.
Globale Netze von Web-Caches können in CDNs auf Inter-Cluster Austausch hinsichtlich Geo-Replikation vertrauen. In der Praxis nutzen CDN-Anbieter die Tatsache, dass eine Cache-Suche nach einer URL gut zu einer Schlüssel-Wert-Schnittstelle passt. Dies ermöglicht das Skalieren von Cache-Clustern, indem Web-Caches als Proxy auf einem verteilten Key Value gespeichert bereitgestellt werden.[13
== 1.2 Loadbalancing (Lastenausgleich) ==
Ein Load Balancer verteilt die Arbeitslast Ihres Systems auf mehrere Einzelsysteme oder eine Gruppe von Systemen, um die Belastung eines einzelnen Systems zu verringern, was wiederum die Zuverlässigkeit, Effizienz und Verfügbarkeit Ihrer Unternehmensanwendung oder Website erhöht.
Er fungiert als Vermittler/Regler, der vor den Servern sitzt und Anfragen an alle Server weiterleitet, die in der Lage sind, diese Anfragen in einer Weise zu erfüllen, welche die Geschwindigkeit und die Kapazitätsauslastung maximieren und sicherstellen. Somit wird sichergestellt, dass kein einzelner Server überlastet wird, und die Performance beeinträchtigt werden könnte.
Falls ein einzelner Server ausfällt, leitet der Load Balancer den Datenverkehr auf die verbleibenden Online-Server um. Wenn ein neuer Server zur Servergruppe hinzugefügt wird, beginnt der Load Balancer automatisch, Anfragen an ihn zu senden.
Load Balancer verwenden Algorithmen wie Round-Robin, Sticky Sessions und inhaltsbasiertes Routing, um den Datenverkehr zu verteilen. Dadurch wird sichergestellt, dass kein einzelner Server mit Anfragen überlastet wird, was zu einer verbesserten Leistung und Skalierbarkeit führt.
Die aufgaben des Load Balancer:
- a) Verteilt Client-Anfragen bzw.r die Netzwerklast effizient auf einen weiteren oder mehrere Server.
- b) Überwacht den Zustand, die Verfügbarkeit und die Ausfallzeiten der Server
- c) Sorgt für hohe Verfügbarkeit und Zuverlässigkeit, indem er Anfragen nur an Server sendet, die online sind.
- d) Bietet die Flexibilität, je nach Bedarf Server hinzuzufügen oder zu entfernen
Vorteile des Lastausgleichs:
- Verringerung der Arbeitslast auf einem einzelnen Server.
- Durch Gleichzeitigkeit wird eine größere Menge an Arbeit in der gleichen Zeit erledigt.
- Gesteigerte Leistung Ihrer Anwendung durch schnellere Reaktion.
- Kein einzelner Ausfallpunkt. In einer Umgebung mit Lastausgleich ist die Anwendung bei Ausfall eines Servers immer noch verfügbar und wird von den anderen Servern im Cluster bedient.
- Wenn ein geeigneter Lastausgleichsalgorithmus verwendet wird, führt dies zu einer optimalen und effizienten Nutzung der Ressourcen, da das Szenario, dass einige Serverressourcen mehr genutzt werden als andere, vermieden wird.
- Skalierbarkeit: Wir können die Anzahl der Server im laufenden Betrieb erhöhen oder verringern, ohne die Anwendung zu beeinträchtigen.
- Lastausgleich erhöht die Zuverlässigkeit Ihrer Unternehmensanwendung
- Erhöhte Sicherheit, da die physischen Server und IPs in bestimmten Fällen abstrakt sind.
Es gibt zwei Arten von Load Balancern, die unterschiedliche Planungsalgorithmen und Routing-Mechanismen implementieren.
Der Software Load - Balancer läuft auf virtuellen Maschinen (VMs) oder White-Box-Servern, meist als Application-Delivery-Controller-Funktion (ADC). ADCs bieten in der Regel zusätzliche Funktionen, darunter Caching, Komprimierung und Traffic Shaping. Der in Cloud-Umgebungen beliebte virtuelle Lastenausgleich bietet ein hohes Maß an Flexibilität. Er ermöglicht es den Benutzern beispielsweise, den Datenverkehr automatisch nach oben oder unten zu skalieren, um Verkehrsspitzen oder einen Rückgang der Netzwerkaktivität zu spiegeln.
Der Hardware - Load-Balancer ist ein Gerät mit spezieller und meist proprietär integrierter Software, welche zum Bewältigen großer Datenmengen des Anwendungsverkehrs ausgelegt ist. Diese Art des Load Balancer verfügt u.a. über eine Virtualisierungsfunktion und ermöglicht die Verwendung von Instanzen eines virtuellen Load Balancers.
2.Verwendung von Reverse Proxies und Content Delivery Networks (CDNs)
2.1 Reverse Proxy
Reverse Proxies fungieren als Vermittler zwischen Clients und Webservern, verbessern die Leistung von Websites durch Caching und bieten zusätzliche Sicherheit, indem sie die IP-Adresse des Ursprungs-Servers verbergen.
Ein Reverse Proxy ist ein Server, der sich zwischen das Internet und einen Webserver schaltet, Anfragen von Clients entgegennimmt und sie an den entsprechenden Server weiterleitet. Dies kann in verschiedenen Situationen nützlich sein, z. B. wenn Sie mehrere Webserver haben, die unterschiedliche Arten von Inhalten anbieten (z. B. statische Dateien gegenüber dynamischen Inhalten), oder wenn Sie die SSL-Verschlüsselung vom Webserver auf den Reverse-Proxy verlagern wollen.
Einer der Hauptvorteile eines Reverse-Proxys besteht darin, dass er die Leistung einer Website verbessern kann, indem er häufig angeforderte Inhalte zwischenspeichert und sie direkt ausliefert, ohne sie vom Webserver anfordern zu müssen. Dies kann die Belastung des Webservers erheblich verringern und die Antwortzeiten für die Kunden verbessern.
=== 2.1.1 Funktionsweise ===
Wenn ein Client eine Anfrage für den Zugriff auf eine Website sendet, durchläuft sie zunächst den Reverse Proxy. Der Proxy prüft in seinem Zwischenspeicher, ob er den vom Client angeforderten Inhalt bereits hat. Ist dies der Fall, kann er den Inhalt direkt an den Client ausliefern. Ist dies nicht der Fall, leitet er die Anfrage an den Ursprungsserver weiter, um die Inhalte abzurufen. Sobald der Inhalt abgerufen wurde, speichert der Reverse-Proxy ihn im Zwischenspeicher, so dass künftige Anfragen schneller bedient werden können.
Reverse Proxys können auch dazu verwendet werden, den Datenverkehr auf mehrere Server zu verteilen. Dieser Prozess wird als Lastausgleich bezeichnet und ist ein wesentlicher Bestandteil der Netzwerkarchitektur.
Darüber hinaus kann ein Reverse-Proxy auch zusätzliche Sicherheit bieten, indem er die IP-Adresse des Ursprungs-Servers verbirgt und vor DDoS-Angriffen schützt. Indem er als Schutzschild zwischen dem Internet und dem Webserver fungiert, kann der Reverse-Proxy Angreifer daran hindern, direkt auf den Webserver zu zielen und möglicherweise sensible Daten zu kompromittieren.
2.2 Reverse-Proxy Funktionen versus Load-Balancer Funktionen
- Hochverfügbarkeit sowie Skalierbarkeit
Einer der Hauptvorteile von Load Balancern besteht darin, dass sie den Datenverkehr und die Ressourcen auf mehrere Server verteilen können, was die Skalierung bei Bedarf erleichtert. Dies ist besonders nützlich in Umgebungen, in denen ein hohes Verkehrsaufkommen zu bewältigen ist. Reverse Proxies hingegen sind nicht für eine einfache Skalierung ausgelegt, da sie den Datenverkehr im Allgemeinen an einen einzigen Server leiten. Sie können jedoch häufig angeforderte Inhalte im Cache speichern, um die Leistung zu verbessern.
One of the main benefits of load balancers is their ability to distribute traffic and resources across multiple servers, making it easier to scale up as needed. This is particularly useful in environments where there is a high volume of traffic that needs to be handled. Reverse proxies, on the other hand, are not designed for easy scaling since they generally direct traffic to a single server. However, they can still cache frequently requested content to improve performance.
- SSL-Terminierung
Sowohl Load Balancer als auch Reverse Proxies können die SSL-Terminierung durchführen, bei der SSL-verschlüsselter Datenverkehr entschlüsselt und an den entsprechenden Server weitergeleitet wird. In einer Load-Balancing-Umgebung kann die SSL-Terminierung auf dem Load Balancer durchgeführt werden, während in einer Reverse-Proxy-Umgebung die SSL-Terminierung in der Regel auf dem Proxy-Server selbst erfolgt.
- Security
Load Balancer und Reverse Proxys können beide zum Schutz vor DDoS-Angriffen beitragen, aber Reverse Proxys haben den zusätzlichen Vorteil, dass sie Anonymität bieten. Sie können nämlich die IP-Adresse des Ursprungs-Servers verbergen, indem sie den gesamten externen Datenverkehr zunächst an den Reverse-Proxy weiterleiten. Dadurch wird es für Angreifer schwieriger, den Ursprungsserver zu identifizieren.
- Datenverkehr im Netz
Nochmals die bereits erwähnten Fakten. Die Hauptfunktion eines Load Balancer darin, den Netzwerkverkehr gleichmäßig auf mehrere Server zu verteilen. Dies ist besonders in Umgebungen nützlich, in denen mehrere Server ein hohes Verkehrsaufkommen bewältigen müssen. Reverse Proxies hingegen sind darauf ausgelegt, Inhalte zwischenzuspeichern und sie effizient an die Clients zu liefern. Daher eignen sie sich besser für die Bearbeitung von Anfragen nach statischen Inhalten von einem einzigen Server.
== 2.4 Apache Webserver als Reverse Proxy ==
Der Apache HTTP Server bietet eine breite Palette von Modulen und Erweiterungen, die speziell für die Unterstützung verschiedener Proxy-Funktionen entwickelt wurden.
Mit dem Modul mod_proxy kann der Apache-Webserver als Reverse-Proxy fungieren, indem er Anfragen an einen anderen Server weiterleitet und die Antwort an den Client zurückgibt. Dies erweist sich als nützlich in Szenarien, in denen mehrere Webserver vorhanden sind und die Arbeitslast auf sie verteilt werden muss. Es verbessert die Leistung und baut eine Hochverfügbarkeitsarchitektur für die Web-Infrastruktur auf.
Apache mod_proxy besteht aus mehreren Modulen, von denen jedes seine eigene Funktionalität hat. Hier sind einige der wichtigsten Module:
- mod_proxy: Stellt die Kernfunktionalität des Reverse-Proxys bereit und leitet Anfragen an einen anderen Server weiter.
- mod_proxy_http: Bietet Proxy-Funktionalität für HTTP- und HTTPS-Protokolle.
- mod_proxy_ftp: Bietet Proxy-Funktionen für das FTP-Protokoll.
- mod_proxy_connect: Für SSL-verschlüsselte Verbindungen.
- mod_proxy_ajp: Dient der Weiterleitung von Anfragen an AJP-fähige Anwendungsserver.
- mod_proxy_wstunnel: Für die Verwendung von Web-Sockets
- mod_proxy_balancer: Bietet Lastausgleichsfunktionen.
- mod_cache: Unterstützt verschiedene Cache-Methoden.
- mod_headers: Zur Änderung von HTTP-Header-Zeilen.
- mod_deflate: Komprimiert HTTP-Antworten.
== 2.3 Content Delivery Network ==
Ein Content Delivery Network (CDN) ist ein System von Servern, welches via verschiedener Rechenzentren weltweit verteilt(vgl. Adrew. S Tanenbaum - Distributed Systwms) sind. EinProxy-Server-Netzwerk ist optimal, um die Reichweite von Webseiten zu erhöhen. Die Verwendung eines solchen Netzwerks bedeutet, dass ein Webserver in Verbund mit einigen/vielen Servern verbunden ist. Mit Hilfe eines Verteilungssystems können die statischen Inhalte des Webserver auf Replikationsserver übertragen werden. Ein Anforderungsroutingsystem bestimmt, welcher Replikationsserver im CDN am Besten dafür geeignet ist, um die Daten/Dateien rasch auszuliefern, wenn Benutzer auf bestimmte Inhalte Ihrer Website zugreifen. Je nach Anbieter unterscheiden sich CDNs in mehreren Punkten: Die Verteilung und Anzahl der Server sowie der Grad der Integration leistungsstarker Backbone-Netzwerke sind nur einige Beispiele dafür, wie sie sich unterscheiden können.
Der Hauptzweck eines CDN besteht darin, die Latenzzeit zu verringern und die Zeit zu minimieren, die es dauert, bis die Inhalte die Nutzer erreichen. Dies wird durch die Platzierung von Servern in mehreren Datenzentren auf der ganzen Welt erreicht, die sich strategisch in der Nähe der wichtigsten Internetaustauschpunkte befinden. Wenn ein Benutzer Inhalte anfordert, leitet das CDN die Anforderung an den Server weiter, der dem Benutzer geografisch am nächsten liegt, wodurch die Entfernung, die die Daten zurücklegen müssen, verringert und somit die Antwortzeiten verbessert werden. CDNs tragen auch dazu bei, die Last auf Webservern zu verteilen, indem sie Inhalte in ihrem Netzwerk zwischenspeichern und vervielfältigen. Wenn Inhalte angefordert werden, kann der CDN-Server, der dem Nutzer am nächsten ist, die zwischengespeicherte Version der Inhalte bereitstellen, anstatt sie jedes Mal vom Ursprungsserver abzurufen. Dadurch wird der Ursprungsserver entlastet und die Skalierbarkeit verbessert. Darüber hinaus bieten CDNs weitere Funktionen wie Lastausgleich, SSL/TLS-Terminierung, DDoS-Schutz und Sicherheitsmaßnahmen zum Schutz vor bösartigen Angriffen. Sie können die Bereitstellung von Inhalten optimieren, indem sie Dateien komprimieren, Code minifizieren und Techniken wie Bildoptimierung und Browser-Caching nutzen. Durch den Einsatz eines CDN können Websites und Anwendungen von einer verbesserten Leistung, schnelleren Seitenladezeiten, höherer Verfügbarkeit und besserer Skalierbarkeit profitieren. Sie sind besonders nützlich für Websites mit einem globalen Publikum oder solchen, die große Mengen an medienintensiven Inhalten bereitstellen. [16]
Der Originserver in einem CDN dient als zentrales Repository für die Originalinhalte und interagiert mit der CDN-Infrastruktur, um Inhalte bereitzustellen und zu aktualisieren. Er spielt eine wichtige Rolle bei der Bereitstellung von Inhalten, bei Caching-Richtlinien, bei der Ungültigkeitserklärung von Inhalten und bei der Handhabung der dynamischen Inhaltsgenerierung. Der Originserver arbeitet mit den Edge-Servern im CDN zusammen, um eine effiziente und zuverlässige Bereitstellung der Inhalte für die Endbenutzer zu gewährleisten.
=== === 2.3.1 Originserver in CDNs === ===
In einem Content-Delivery-Network (CDN) ist der Originserver, sprich der Ursprungsserver, der zentrale Server, auf dem das Original oder die maßgebliche Kopie des Webinhalts gespeichert ist. Der Originserver spielt eine entscheidende Rolle bei der Bereitstellung von Inhalten und interagiert mit der CDN-Infrastruktur.
==== ==== 2.3.1.1 Aufgaben/Funktion des Origin: ==== ====
Quelle der Inhalte: Der Originserver ist die Hauptquelle der Inhalte, die über das CDN verbreitet werden. Er speichert die Originaldateien, z. B. HTML-Seiten, Bilder, Videos, Skripte und andere Medieninhalte, aus denen eine Website oder Anwendung besteht.
Verteilung von Inhalten: Wenn ein CDN eine Inhaltsanforderung erhält, prüft es, ob der angeforderte Inhalt im Cache des Edge-Servers verfügbar ist, der dem Benutzer am nächsten ist. Wenn der Inhalt im Cache nicht verfügbar oder abgelaufen ist, holt das CDN den Inhalt vom Originserver ab.
Bereitstellung von Inhalten: Der Originserver ist dafür verantwortlich, dem CDN die erforderlichen Inhalte zur Verteilung bereitzustellen. Dazu gehört das Hochladen und Aktualisieren der Inhalte auf dem Originserver, sobald Änderungen oder Aktualisierungen auftreten. Die Anbieter von Inhalten interagieren in der Regel direkt mit dem Originserver, um ihre Inhalte zu verwalten.
Caching-Richtlinien: Der Originserver kann Caching-Richtlinien oder -Regeln angeben, die das CDN befolgen soll. Dazu gehören Informationen wie Cache-Kontroll-Header, Cache-Ablaufzeiten und Cache-Validierungsmechanismen. Mit Hilfe der Caching-Richtlinien wird festgelegt, wie lange der Inhalt im Cache der Edge-Server gespeichert werden kann, bevor er vom Originserver aktualisiert werden muss.
Inhaltsvalidierung: Wenn Inhalte auf dem Originserver geändert, aktualisiert oder gelöscht werden, kann der Originserver die Invalidierung der Inhalte im CDN auslösen. Dadurch wird sichergestellt, dass die zwischengespeicherten Kopien des Inhalts auf den Edge-Servern gelöscht und durch die aktualisierte Version ersetzt werden. Dynamisch
Generierung von Inhalten: CDNs eignen sich zwar hervorragend für die Bereitstellung statischer Inhalte, können aber auch dynamische, vom Originserver generierte Inhalte verarbeiten. Dazu gehören Inhalte, die auf der Grundlage von Benutzerinteraktionen oder Echtzeitdaten personalisiert werden. CDNs können mit dem Originserver zusammenarbeiten, um die Bereitstellung dynamischer Inhalte zu optimieren, indem sie Techniken wie Edge-Side Scripting (ESS) oder Dynamic Content Caching einsetzen.
2.3.2 EdgeServer in CDNs
In einem Content-Delivery-Network (CDN) bezieht sich ein Edge-Server auf die Server, die sich am Rande des Netzes befinden, näher an den Endnutzern. Diese Server spielen eine entscheidende Rolle bei der effizienten Bereitstellung von Inhalten und sind eine Schlüsselkomponente der CDN-Infrastruktur.==== 2.3.2.1 Aufgaben/Funktion des Edge: ====
Zweck von Edge-Servern: Der Hauptzweck von Edge-Servern besteht darin, zwischengespeicherte Kopien von Webinhalten zu speichern und den Endnutzern bereitzustellen. Durch die Platzierung von Servern an verschiedenen geografisch verteilten Standorten verringern CDNs die Entfernung zwischen den Inhalten und den Nutzern, wodurch die Latenzzeit minimiert und die Leistung verbessert wird.
Zwischenspeicherung von Inhalten: Edge-Server speichern häufig aufgerufene Inhalte vom Ursprungsserver im Cache. Wenn ein Benutzer Inhalte anfordert, prüft das CDN, ob der Inhalt im Cache des Edge-Servers verfügbar ist. Ist dies der Fall, kann der Edge-Server den Inhalt direkt an den Benutzer liefern und muss ihn nicht erst vom Ursprungsserver abrufen. Dieser Caching-Mechanismus entlastet den Ursprungsserver und verbessert die Antwortzeiten.
Routing: CDNs verwenden intelligente Routing-Algorithmen, um den besten Edge-Server für die Bearbeitung einer Benutzeranfrage zu ermitteln. Dabei werden Faktoren wie der geografische Standort des Benutzers, die Netzwerkbedingungen, die Serverauslastung und die Verfügbarkeit berücksichtigt. Ziel ist es, die Anfrage an den Edge-Server zu leiten, der den Inhalt am effizientesten bereitstellen kann, wodurch die Latenzzeit minimiert und die Leistung maximiert wird.
Lastausgleich: Edge-Server spielen auch eine Rolle beim Lastausgleich innerhalb der CDN-Infrastruktur. CDNs verteilen Benutzeranfragen auf mehrere Edge-Server, um die Ressourcennutzung zu optimieren und Skalierbarkeit zu gewährleisten. Dadurch wird verhindert, dass ein einzelner Server überlastet wird, und es wird sichergestellt, dass der Prozess der Inhaltsbereitstellung effizient und zuverlässig ist.
=== 2.3.3 Routing in CDNs ===
Die Weiterleitung von Inhalten ist ein wichtiger Aspekt von Content Delivery Networks (CDNs), der bestimmt, wie Benutzeranfragen nach Inhalten an die entsprechenden Edge-Server für eine effiziente Bereitstellung weitergeleitet werden. Content-Routing-Algorithmen helfen bei der Optimierung der Auswahl des am besten geeigneten Edge-Servers auf der Grundlage von Faktoren wie Nähe, Netzwerkbedingungen, Serverauslastung und Verfügbarkeit.
=== 2.3.4 Caching ===
In einem Content Delivery Network (CDN) werden Caching-Algorithmen verwendet, um zu bestimmen, welche Inhalte in den Edge-Servern zwischengespeichert werden sollen und wie der Cache verwaltet werden soll. Diese Algorithmen spielen eine entscheidende Rolle bei der Optimierung der Cache-Nutzung, der Sicherstellung der Verfügbarkeit von häufig abgerufenen Inhalten und der Verbesserung der Gesamtleistung des CDN. Im Folgenden werden einige gängige Caching-Algorithmen vorgestellt, die in CDNs verwendet werden:´. Cache ist eine grundlegende Komponente von Content Delivery Networks (CDNs). Im Zusammenhang mit CDNs bezieht sich Caching auf den Prozess der Speicherung von Kopien von Webinhalten auf den Edge-Servern des CDN-Netzwerks.
Nachstehend einige Caching Algorithmen:
3. Grundlagen von Docker
Docker ist eine zentrale Plattform für das Verpacken, Bereitstellen und Ausführen von Anwendungenund bedients sich des Containering. Containervirtualisierung bzw Containeringist eine Methode, um mehrere Instanzen eines Betriebssystems als Host isoliert voneinander den Kernel des Hostbetriebssystem nutzen zu lassen. Die Idee von Docker ist es, dass Entwickler auf einfache Weise Anwendungen entwickeln und sie auf Container packen können, die dann überall eingesetzt werden können. Docker ermöglicht es , Software einfach zu installieren und auszuführen, ohne sich um die Einrichtung oder Abhängigkeiten zu kümmern. Die Docker Container sind nicht für die Ausführung von typischen Client-Anwendungen wie Excel oder Word gedacht. In dockercontainern laufen nur Server-Applikationen, welche über interfaces mit Protokollen interagieren/kommunizieren.[25]
3.1 Die Architektur
Docker folgt der Client-Server-Architektur. Die Archıtektur besteht aus drei Teilen. [26]
1) Clıent: Docker stellt dem Client Command Lıne Interface (CLI) Tools zur Verfügung, um mit dem Docker-Daemon zu interagieren. Clıent kann Anwendungen erstellen, ausführen und stoppen. Clıent kann auch aus der Ferne mit dem Dockerhost interagieren.
2) Host: Er enthält Contaıner, Images und Docker-Daemon. Er bietet eine vollständige Umgebung für die Ausführung und den Betrieb Ihrer Anwendung.
3) Regıstry: Es ist ein globales Reposıtory von Images.
Der Docker-Client kommuniziert mit dem Docker-Daemon, der das Erstellen, Ausführen und Verteilen der Docker-Container übernimmt. Der Docker-Client und -Daemon können auf demgeichen System ausgeführt werden.Der Docker-Client und -Daemon kommunizieren über eine REST-API, über UNIX-Sockets oder eine Netzwerkschnittstelle. Ein weiterer Docker-Client ist Docker Compose, mit demmit Anwendungen gearbeitet werden können, die aus einer Folge von Containern bestehen.
=== 3.1.1 Der Docker-Daemon
===
3.1.2 Der Docker-Client
3.1.4.1 Docker-Image
3.1.4.2 Docker Container
- Docker Desktop umfasst:
- Docker-Daemon ( dockerd),
- den Docker-Client ( docker),
- Docker Compose,
- Docker Content Trust,
- Kubernetes,
- Credential Helper.