Überblick über die Docker-Architektur und Docker-Komponenten [Für Anfänger]
Veröffentlicht: 2020-12-31Wenn Sie kürzlich auf die Welt der Container gestoßen sind, ist es wahrscheinlich keine schlechte Idee, die zugrunde liegenden Elemente zu verstehen, die zusammenwirken, um die Vorteile der Containerisierung zu bieten. Aber vorher gibt es eine Frage, die Sie stellen können. Welches Problem lösen Container?
Nach dem Erstellen einer Anwendung in einem typischen Entwicklungslebenszyklus sendet der Entwickler sie zu Testzwecken an den Tester. Da die Entwicklungs- und Testumgebungen jedoch unterschiedlich sind, funktioniert der Code nicht.
Jetzt gibt es dafür überwiegend zwei Lösungen – entweder Sie verwenden eine virtuelle Maschine oder eine containerisierte Umgebung wie Docker. In der guten alten Zeit haben Organisationen VMs bereitgestellt, um mehrere Anwendungen auszuführen.
Warum haben sie also begonnen, die Containerisierung über VMs zu übernehmen? In diesem Artikel werden wir detaillierte Erklärungen zu all diesen Fragen geben.
Hinter diesem fantastischen Tool muss eine ebenso durchdachte Architektur stehen. Bevor wir uns mit den Komponenten der Docker-Architektur vertraut machen, wollen wir Docker-Container und ihre Überlegenheit gegenüber VMs verstehen.
Inhaltsverzeichnis
Docker-Container
Docker ist ein Open-Source-Projekt, das die Möglichkeit bietet, Anwendungen in lose isolierten und abgeschlossenen Umgebungen, sogenannten Containern, zu erstellen, zu verpacken und auszuführen.

Mit all der Isolierung und Sicherheit, die die Docker-Plattform bietet, können Sie viele Container gleichzeitig auf einem bestimmten Host ausführen.
Zu den Gründen, warum Docker-Container weit verbreitet sind, gehören:
- Es ermöglicht Entwicklern, Code lokal zu schreiben und die Arbeit mithilfe von Containern mit ihrem Team zu teilen.
- Sie können ihre Anwendungen in die Testumgebungen, also die Container, pushen und automatisierte Tests durchführen.
- Wenn Fehler gefunden werden, können sie in der Entwicklungsumgebung behoben und dann erneut bereitgestellt werden.
- Eine Lösung zu finden ist so einfach wie das Übertragen eines aktualisierten Images in die Produktionsumgebung.
Bevor wir tief in das Thema eintauchen, müssen wir die traditionellen Virtualisierungspraktiken von der Containerisierung der neuen Generation unterscheiden.
Virtuelle Maschinen vs. Docker-Container
Bevor wir die Containerisierung für unsere DevOps-Praktiken einsetzten, standen virtuelle Maschinen ganz oben auf der Liste. Früher haben wir VMs für jede Anwendung erstellt.
Während VMs fast alle Anforderungen erfüllten, war der Nachteil der Verwendung von VMs umständlich und belegte alle erforderlichen Arbeitsspeicher- und Hardwareressourcen von den zugrunde liegenden Hostmaschinen.
Mit der Containerisierung konnte dies jedoch leicht vermieden werden, da Container eine Virtualisierung auf Betriebssystemebene bieten und normalerweise weniger Speicher benötigen. Dadurch wurde es populär und wurde schließlich von der DevOps-Community übernommen.
Bildquelle
Das obige Diagramm beschreibt, wie sich die Architekturen von VMs und Containern unterscheiden und warum Container mittlerweile VMs für alltägliche Entwicklungsprozesse überholt haben. Im Gegensatz zu VMs sitzen die Container auf den Container Engines, um eine Virtualisierung auf Betriebssystemebene bereitzustellen, wodurch viele Ressourcen eingespart werden.
Docker-Engine
Bevor die verschiedenen architektonischen Komponenten von Docker besprochen werden, ist es wichtig, den Arbeitsablauf von Docker zu verstehen. Werfen wir einen Blick auf die Docker-Engine und ihre verschiedenen Teile, die uns eine Vorstellung davon geben, wie das Docker-System funktioniert. Die Docker Engine ist in erster Linie eine typische Client-Server-Anwendung mit drei Hauptkomponenten.
Server (Daemon)
Der Docker-Daemon ist ein kontinuierlicher Prozess, der im Hintergrund läuft und alle Docker-Objekte verwaltet. Es hört auf die vom Client gestellten Docker-API-Anfragen und verarbeitet sie kontinuierlich.
Rest-API
Es ist die Schnittstelle, die die Docker-Clients verwenden, um mit dem Docker-Daemon zu interagieren. Die Clients können über die API mit dem Daemon sprechen und ihm Anweisungen geben.
Klient
Der Docker-Client ist eine Befehlszeilenschnittstelle (CLI), die mit dem Daemon interagieren kann. Es vereinfacht den gesamten Prozess des Behältermanagements.
Bildquelle
Der Docker-Client (der ein HTTP-Client wie eine CLI sein kann) kommuniziert mit dem Daemon, der die schwere Aufgabe des Erstellens, Ausführens und Teilens von Containern übernimmt. Der Client und der Daemon können entweder auf derselben Maschine laufen oder einen Client mit einem entfernten Daemon verbinden. Der Client und der Daemon kommunizieren miteinander unter Verwendung einer Rest-API über Sockets oder eine Netzwerkschnittstelle. Der Docker-Client hilft Benutzern, Docker-Objekte wie Container, Images, Volumes usw. zu verwalten. Erfahren Sie mehr über Docker-Projekte

Melden Sie sich für Softwareentwicklungskurse an den besten Universitäten der Welt an. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.
Architektonische Komponenten
Wie bereits erwähnt, verwendet Docker eine Client-Server-Architektur, bei der der Client über eine Rest-API mit dem Daemon kommuniziert. Die Docker-Architektur besteht aus mehreren Komponenten, wie unten erläutert.
Bildquelle
Dämon
Es lauscht auf die von den Clients initiierten API-Anforderungen und verwaltet Docker-Objekte, einschließlich Container, Images, Volumes und Netzwerke. Es kann auch mit anderen Daemons kommunizieren, um Docker-Dienste zu verwalten, insbesondere um große Docker-Netzwerke zu verwalten.
Klient
Die Docker-Benutzer können über den Docker-Client mit dem Daemon kommunizieren. Die Benutzer führen Befehle wie „Docker run …“ mit einem Client wie CLI aus, der diese Befehle dann an Docker (Daemon) weiterleitet und sie schließlich ausführt. Der Docker-Client kommuniziert mit mehreren Daemons.
Register
Es speichert Docker-Images und kann öffentlich oder privat sein. Docker ist so konfiguriert, dass es standardmäßig auf Docker Hub nach Images sucht. Wenn der Client einen Pull- oder Run-Befehl ausgibt, werden die Bilder aus den Repositories gezogen.
Docker-Objekte
Bei der Arbeit mit Docker interagieren wir mit mehreren Objekten wie Containern, Bildern, Volumes, Netzwerken usw.
Einige dieser Objekte sind
Bilder
Es ist eine schreibgeschützte Vorlage und enthält Anweisungen zum Erstellen von Containern. Es enthält auch Metadaten, die die Containerfunktionen beschreiben. Die Benutzer können Images aus der Docker-Registrierung ziehen und darauf beschreibbare Image-Layer erstellen, um benutzerdefinierte Images zu erstellen, die den Anforderungen ihrer Anwendung entsprechen. Einige beliebte Ideen sind Ubuntu, Nginx, MySQL usw. Diese Ideen können teamübergreifend geteilt werden, was ihnen hilft, gemeinsam an einer Anwendung zu arbeiten.
Behälter
Container sind Instanzen von Images, die isolierte Umgebungen für die Anwendungen bereitstellen. Sie haben nur Zugriff auf Ressourcen, die durch die Bilder definiert sind, mit denen sie erstellt wurden.
Netzwerk
Docker-Netzwerke ermöglichen isolierten Containern im selben Netzwerk die Kommunikation und gemeinsame Nutzung von Ressourcen. Einige von Docker bereitgestellte Netzwerke umfassen Bridge, Host, Overlay, Macvlan usw.
Lager
Docker ermöglicht es Ihnen, Daten mithilfe von Treibern innerhalb der beschreibbaren Containerschicht zu speichern. Docker ermöglicht vier Optionen für dauerhaften Speicher – Docker-Volumes, Volume-Container, Verzeichnis-Mounts und Speicher-Plugins.
Die am weitesten verbreitete Speicheroption sind die Volumes. Sie werden auf dem Host-Dateisystem platziert und ermöglichen es mehreren Containern, Daten innerhalb dieser Volumes zu teilen und zu schreiben.
Fazit
Docker verwendet eine Reihe zugrunde liegender State-of-the-Art-Technologien, um seinen Benutzern effiziente Containerisierungsdienste bereitzustellen. Zweifellos hat Docker in den letzten Jahren begonnen, in der Entwicklergemeinschaft an Bedeutung zu gewinnen, und wird dies auch in den kommenden Jahren tun.
Aufgrund der vielfältigen Vorteile von Containern wie Ressourceneffizienz, Skalierbarkeit etc. sichert er sich zu Recht seinen Platz an der Spitze des Decks.
In diesem Artikel haben wir einige der wichtigsten Konzepte von Docker besprochen, wie den Docker-Workflow, seine Architektur und die zugrunde liegenden Technologien, die verschiedenen Docker-Objekte wie Container, Bilder, Registrierungen, Netzwerke usw.
Sie sind jetzt auf dem besten Weg, tief in die schöne Welt der Docker-Container einzutauchen. Sie sollten jetzt besser verstehen, wie verschiedene Docker-Ressourcen zusammenarbeiten, um Ihnen eine Reihe von Funktionen bereitzustellen, mit denen Sie Ihre Anwendungen nahtlos erstellen, bereitstellen und freigeben können.
Lernen Sie die Docker-Architektur mit upGrad kennen
Starten Sie mit upGrad schneller in die Anwendungserstellung.
upGrad Bildung Pvt. Ltd. bietet einen exklusiven Kurs zur Spezialisierung auf Softwareentwicklung in DevOps an, der die Aspiranten darauf vorbereitet, sich in große IT-Giganten einzuarbeiten.

Kurs-Highlights
Das Executive PG-Programm von upGrad in Softwareentwicklung mit Spezialisierung auf Big Data ist ein sorgfältig konzipierter Online-Kurs, der in 12 Monate unterteilt ist.
In diesem Lehrplan werden Sie
- Erhalten Sie exklusiven Zugriff auf die Inhalte zu Data Science und maschinellem Lernen
- Arbeiten Sie an Live-Projekten und Aufgaben
- Erhalten Sie eine 360-Grad-Karriereunterstützung
- Lerne zehn Programmiersprachen und Tools
- Holen Sie sich eine engagierte Schülerbetreuung
Machen Sie sich mit upGrad bereit für die Entwicklung von DevOps-Anwendungen.
Warum warten
Heute bewerben!
