Docker-Architektur: Warum ist es wichtig?



Dieser Blog beschreibt die Docker-Architektur und ihre verschiedenen Komponenten. Es hebt die Docker-Funktionen hervor, die den Grund für seine Beliebtheit angeben.

Viele von uns glauben, dass Docker ein wesentlicher Bestandteil von ist . Hinter diesem unglaublichen Werkzeug muss also eine erstaunliche Architektur stehen. In diesem Blog werde ich alles behandeln, was Sie über die Docker-Architektur wissen müssen. Dies sind die Punkte, die ich hier diskutieren werde:

  1. Traditionelle Virtualisierung gegen Docker
  2. Docker-Workflow
  3. Docker-Architektur

Traditionelle Virtualisierung gegen Docker

Was ist eine VM (Virtual Machine)?

Eine VM ist ein virtueller Server, der einen Hardwareserver emuliert. Eine virtuelle Maschine benötigt die physische Hardware des Systems, um genau dieselbe Umgebung zu emulieren, in der Sie Ihre Anwendungen installieren. Abhängig von Ihrem Anwendungsfall können Sie eine virtuelle Systemmaschine verwenden (die ein gesamtes Betriebssystem als Prozess ausführt und es Ihnen ermöglicht, eine virtuelle Maschine durch eine reale Maschine zu ersetzen) oder virtuelle Maschinen verarbeiten, mit denen Sie Computeranwendungen allein in der virtuellen ausführen können Umgebung.





Früher haben wir virtuelle Maschinen erstellt, und jede VM hatte ein Betriebssystem, das viel Platz beanspruchte und es schwer machte.

Was ist Docker?

Docker ist ein Open-Source-Projekt, das eine Softwareentwicklungslösung namens Container anbietet. Um Docker zu verstehen, müssen Sie wissen, was Container sind. Gemäß Docker , Ein Container ist ein leichtes, eigenständiges, ausführbares Paket einer Software, das alles enthält, was zum Ausführen erforderlich ist.



Container sind plattformunabhängig und daher kann Docker sowohl auf Windows- als auch auf Linux-basierten Plattformen ausgeführt werden. Tatsächlich kann Docker auch in einer virtuellen Maschine ausgeführt werden, wenn dies erforderlich ist. Der Hauptzweck von Docker besteht darin, dass Sie Microservice-Anwendungen in einer verteilten Architektur ausführen können.

Im Vergleich zu virtuellen Maschinen verschiebt die Docker-Plattform die Abstraktion von Ressourcen von der Hardwareebene auf die Betriebssystemebene. Dies ermöglicht die Realisierung der verschiedenen Vorteile von Behältern, z. Anwendungsportabilität, Infrastrukturtrennung und in sich geschlossene Microservices.

Unterschied zwischen Hashmap und Hashtable

Mit anderen Worten, während virtuelle Maschinen den gesamten Hardwareserver abstrahieren, abstrahieren Container den Betriebssystemkern. Dies ist ein ganz anderer Ansatz für die Virtualisierung und führt zu viel schnelleren und leichteren Instanzen.



vm vs docker - docker architektur - edureka

Docker-Workflow

Schauen wir uns zunächst Docker Engine und seine Komponenten an, damit wir eine grundlegende Vorstellung davon haben, wie das System funktioniert. Mit Docker Engine können Sie Anwendungen mit den folgenden Komponenten entwickeln, zusammenstellen, versenden und ausführen:

  1. Docker Daemon : Ein dauerhafter Hintergrundprozess, der Docker-Images, Container, Netzwerke und Speichervolumes verwaltet. Der Docker-Daemon wartet ständig auf Docker-API-Anforderungen und verarbeitet diese.

  2. Docker Engine REST API : Eine API wird von Anwendungen verwendet, um mit dem Docker-Daemon zu interagieren. Auf sie kann ein HTTP-Client zugreifen.

  3. Docker CLI : Ein Befehlszeilenschnittstellen-Client für die Interaktion mit dem Docker-Dämon. Dies vereinfacht die Verwaltung von Containerinstanzen erheblich und ist einer der Hauptgründe, warum Entwickler Docker lieben.

Zunächst spricht der Docker-Client mit dem Docker-Dämon, der das schwere Heben des Gebäudes, das Ausführen sowie das Verteilen unserer Docker-Container durchführt. Grundsätzlich können sowohl der Docker-Client als auch der Daemon auf demselben System ausgeführt werden. Wir können auch einen Docker-Client mit einem verbindenRemote Docker Daemon. Mithilfe einer REST-API kommunizieren Docker-Client und -Dämon über UNIX-Sockets oder eine Netzwerkschnittstelle.

Docker-Architektur

Die Architektur von Docker verwendet ein Client-Server-Modell und besteht aus den Komponenten Docker-Client, Docker-Host, Netzwerk und Speicher sowie Docker Registry / Hub. Schauen wir uns diese im Detail an.

Docker's Client

Docker-Benutzer können über einen Client mit Docker interagieren. Wenn Docker-Befehle ausgeführt werden, sendet der Client sie an den Dockerd-Daemon, der sie ausführt. Die Docker-API wird von Docker-Befehlen verwendet. Der Docker-Client kann mit mehr als einem Dämon kommunizieren.

Docker-Host

Der Docker-Host bietet eine vollständige Umgebung zum Ausführen und Ausführen von Anwendungen. Es besteht aus dem Docker-Daemon, Images, Containern, Netzwerken und Speicher. Wie bereits erwähnt, ist der Dämon für alle containerbezogenen Aktionen verantwortlich und empfängt Befehle über die CLI oderdie REST-API. Es kann auch mit anderen Dämonen kommunizieren, um seine Dienste zu verwalten.

Docker-Objekte

1. Bilder

Bilder sind nichts anderes als eine schreibgeschützte Binärvorlage, mit der Container erstellt werden können. Sie enthalten auch Metadaten, die die Funktionen und Anforderungen des Containers beschreiben. Bilder werden zum Speichern und Versenden von Anwendungen verwendet. Ein Image kann allein zum Erstellen eines Containers verwendet oder angepasst werden, um zusätzliche Elemente hinzuzufügen, um die aktuelle Konfiguration zu erweitern.

Sie können die Container-Images mithilfe einer privaten Container-Registrierung für Teams innerhalb eines Unternehmens freigeben oder mithilfe einer öffentlichen Registrierung wie Docker Hub für die Welt freigeben. Bilder sind das Kernelement der Docker-Erfahrung, da sie die Zusammenarbeit zwischen Entwicklern auf eine Weise ermöglichen, die zuvor nicht möglich war

2. Behälter

Container sind eine Art gekapselte Umgebungen, in denen Sie Anwendungen ausführen. Der Container wird durch das Image und alle zusätzlichen Konfigurationsoptionen definiert, die beim Starten des Containers bereitgestellt werden, einschließlich und nicht beschränkt auf die Netzwerkverbindungen und Speicheroptionen. Container haben nur Zugriff auf Ressourcen, die im Image definiert sind, es sei denn, beim Erstellen des Images in einen Container wird zusätzlicher Zugriff definiert.

Sie können auch ein neues Bild basierend auf dem aktuellen Status eines Containers erstellen. Da Container viel kleiner als VMs sind, können sie in Sekundenschnelle gedreht werden und führen zu einer viel besseren Serverdichte

3. Netzwerke

Das Docker-Netzwerk ist ein Durchgang, über den alle isolierten Container kommunizieren. Docker enthält hauptsächlich fünf Netzwerktreiber:

    1. Brücke : Dies ist der Standard-Netzwerktreiber für einen Container. Sie verwenden dieses Netzwerk, wenn Ihre Anwendung auf eigenständigen Containern ausgeführt wird, d. H. Auf mehreren Containern, die mit demselben Docker-Host kommunizieren.

    2. Gastgeber : Dieser Treiber entfernt die Netzwerkisolation zwischen Docker-Containern und Docker-Host. Sie können es verwenden, wenn Sie keine Netzwerkisolation zwischen Host und Container benötigen.

    3. Überlagerung : Dieses Netzwerk ermöglicht es Schwarmdiensten, miteinander zu kommunizieren. Sie verwenden es, wenn die Container auf verschiedenen Docker-Hosts ausgeführt werden sollen oder wenn Sie Schwarmdienste von mehreren Anwendungen erstellen möchten.

    4. Keiner : Dieser Treiber deaktiviert das gesamte Netzwerk.

    5. Macvlan : Dieser Treiber weist Containern eine Mac-Adresse zu, damit sie wie physische Geräte aussehen. Es leitet den Verkehr zwischen Containern über ihre Mac-Adressen weiter. Sie verwenden dieses Netzwerk, wenn die Container beispielsweise während der Migration eines VM-Setups wie ein physisches Gerät aussehen sollen.

4. Lagerung

Sie können Daten in der beschreibbaren Ebene eines Containers speichern, benötigen jedoch einen Speichertreiber. Da es nicht persistent ist, geht es verloren, wenn der Container nicht ausgeführt wird. Darüber hinaus ist es nicht einfach, diese Daten zu übertragen. In Bezug auf dauerhaften Speicher bietet Docker vier Optionen:

    1. Datenmengen : Sie bieten die Möglichkeit, dauerhaften Speicher zu erstellen, Volumes umzubenennen, Volumes aufzulisten und auch den Container aufzulisten, der dem Volume zugeordnet ist. Datenmengen werden auf dem Host-Dateisystem außerhalb des Container-Kopier- und Schreibmechanismus abgelegt und sind ziemlich effizient.

    2. Volumenbehälter : Es ist ein alternativer Ansatz, bei dem ein dedizierter Container ein Volume hostet und dieses Volume in andere Container einbindet. In diesem Fall ist der Volume-Container unabhängig vom Anwendungscontainer. Sie können ihn daher für mehrere Container freigeben.

    3. Verzeichnishalterungen : Eine weitere Option ist das Mounten des lokalen Verzeichnisses eines Hosts in einen Container. In den zuvor genannten Fällen müssten sich die Volumes im Ordner Docker-Volumes befinden, während bei Directory Mounts jedes Verzeichnis auf dem Host-Computer als Quelle für das Volume verwendet werden kann.

    4. Speicher-Plugins : Speicher-Plugins bieten die Möglichkeit, eine Verbindung zu externen Speicherplattformen herzustellen. Diese Plugins ordnen den Speicher vom Host einer externen Quelle wie einem Speicherarray oder einer Appliance zu. Eine Liste der Speicher-Plugins finden Sie auf der Docker-Plugin-Seite.

Docker-Registrierung

Docker-Registrierungen sind Dienste, die Speicherorte bereitstellen, an denen Sie Bilder speichern und herunterladen können. Mit anderen Worten, eine Docker-Registrierung enthält Docker-Repositorys, in denen ein oder mehrere Docker-Images gehostet werden. Öffentliche Register umfassen zwei Komponenten, nämlich Docker Hub und Docker Cloud. Sie können auch private Registries verwenden. Die häufigsten Befehle bei der Arbeit mit Registern sind: Docker Push, Docker Pull, Docker Run

Nachdem Sie die Docker-Architektur verstanden haben, lesen Sie dies von Edureka, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt. Der Edureka DevOps-Zertifizierungskurs hilft den Lernenden, DevOps zu verstehen und Kenntnisse in verschiedenen DevOps-Prozessen und -Tools wie Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack und GIT zu erwerben, um mehrere Schritte in SDLC zu automatisieren.

Hast du eine Frage an uns? Bitte erwähnen Sie es im Kommentarbereich dieser „Docker-Architektur“ und wir werden uns bei Ihnen melden