Einführung in Docker: Was ist, Architektur, Workflow
Veröffentlicht: 2020-04-27Inhaltsverzeichnis
Geschichte der Virtualisierung
Vor nicht allzu langer Zeit war die Bereitstellung eines Dienstes ein Prozess, der sowohl langsam als auch schmerzhaft war. Der Prozess umfasste das Schreiben von Code durch das Entwicklungsteam und dessen Bereitstellung durch das Betriebsteam auf Metallmaschinen. Früher hatte das Betriebsteam viel Arbeit, da es nach Sprachcompilern, Bibliotheken und Patches suchen musste, um den Code zum Laufen zu bringen.
Wenn der Prozess Fehler oder Fehler aufwies, musste er von vorne beginnen – das Entwicklungsteam würde die Fehler oder Fehler beheben und das Betriebsteam würde erneut mit der Bereitstellung des Codes beginnen.
Die Dinge wurden etwas besser, als Hypervisoren entwickelt wurden. Also, was sind Hypervisoren? Hierbei handelt es sich um eine Sammlung virtueller Maschinen (VMs), die kontinuierlich ausgeführt oder in regelmäßigen Abständen abgeschaltet werden können, insbesondere wenn sie nicht verwendet werden. Virtuelle Maschinen haben definitiv geholfen, indem sie den Prozess der Fehlerbeseitigung und der Bereitstellung von Code beschleunigt haben, aber sie hatten immer noch ein paar Probleme. Docker-Container waren die wirklichen Wendepunkte. Sie haben sogar die Probleme angesprochen, die in virtuellen Maschinen bestanden.
Lesen Sie: Kubernetes vs. Docker: Primäre Unterschiede
Was ist Docker?
Es ist eine Open-Source-Plattform, die von Entwicklern auf der ganzen Welt verwendet wird, um Anwendungen auszuführen, zu verpacken und zu verteilen. Docker macht den Prozess der Kapselung von Anwendungen vom ersten bis zum letzten Schritt sehr einfach und effizient. Um Docker besser zu verstehen, müssen Sie verstehen, was Container sind und wie sie funktionieren.
Ein Container ist nichts anderes als ein eigenständiges, leichtgewichtiges und ausführbares Paket eines Teils der Software, das alles enthält, was zum Ausführen erforderlich ist. Container sind in keiner Weise von Plattformen abhängig. Docker ist also sowohl mit Windows- als auch mit Linux-basierten Maschinen kompatibel. Außerdem können Sie Docker bei Bedarf sogar auf einer virtuellen Maschine ausführen. Das grundlegende Ziel von Docker besteht darin, Entwicklern die Möglichkeit zu geben, verteilte Architekturen zum Ausführen von Microservice-Anwendungen zu verwenden.

Im Gegensatz zu virtuellen Maschinen, die früher die Abstraktion von Hardware durchführten, geht Docker eine Stufe höher und führt die Abstraktion eines anderen Satzes von Ressourcen auf Betriebssystemebene durch. Dies bietet mehrere Vorteile, darunter unter anderem die Trennung der Infrastruktur und die Portabilität von Anwendungen. Mit anderen Worten, im Gegensatz zu virtuellen Maschinen, die früher den Hardwareserver abstrahierten, funktioniert der containerbasierte Ansatz von Docker, indem er den Kern des Betriebssystems abstrahiert. Dies ist eine großartige Alternative zur Virtualisierung, die zu einer schnelleren Erstellung einfacher Instanzen führt. Docker ist in zwei Versionen verfügbar:
Enterprise-Edition (EE):
Diese Version wurde speziell für IT-Teams und die Unternehmensentwicklung entwickelt. Diese Version wird zum Entwickeln, Versenden und Ausführen von Anwendungen verwendet.
Community-Edition (CE):
Diese Version wird von Einzelpersonen und kleinen Teams verwendet, die Container-basierte Apps erkunden oder mit Docker beginnen.
Lesen Sie: Ideen und Themen für Full-Stack-Projekte
Docker-Workflow
In diesem Abschnitt konzentrieren wir uns auf die Docker Engine sowie ihre verschiedenen Komponenten. Dies wird uns helfen, besser zu verstehen, wie Docker funktioniert, bevor wir zur Docker-Architektur übergehen. Docker Engine ist die Kraft, die es der Entwicklung ermöglicht, verschiedene Funktionen mit dieser containerbasierten Anwendung auszuführen. Sie können die unten aufgeführten Komponenten zum Erstellen, Verpacken, Versenden und Ausführen von Anwendungen verwenden.
1. Docker-Daemon
Es ist der Hintergrundprozess, der kontinuierlich daran arbeitet, Sie bei der Verwaltung von Images, Speichervolumes, Netzwerken und Containern zu unterstützen. Es sucht immer nach Docker-API-Anforderungen, um sie zu verarbeiten.
2. Docker-CLI
Es ist ein Schnittstellenclient, der mit Docker Daemon interagiert. Es hilft Entwicklern, den Prozess der Verwaltung von Containerinstanzen zu vereinfachen. Dies ist einer der Hauptgründe, warum Entwickler Docker anderen ähnlichen Anwendungen vorziehen .

3. Docker-Engine-Rest-API
Es erleichtert Interaktionen zwischen Docker-Daemon und Anwendungen. Für den Zugriff auf diese APIs ist normalerweise ein HTTP-Client erforderlich.
Docker-Architektur
Die Docker-Architektur ist eine Client-Server-basierte Architektur. Es hat drei Hauptkomponenten, die unten erwähnt werden:
- Docker-Host
- Docker-Client
- Docker-Registrierung
- Docker-Objekte
In der Anfangsphase interagiert der Docker-Client mit dem Daemon, der für einen Großteil der Arbeit verantwortlich ist, die für die Entwicklung, Ausführung und Verteilung von Docker-Containern erforderlich ist.
Der Docker-Daemon und der Client können entweder auf einem einzelnen System ausgeführt werden, oder der Entwickler kann einen Remote-Daemon verwenden, um ihn mit einem lokalen Docker-Client zu verbinden. Die Rest-API wird verwendet, um die Kommunikation zwischen dem Docker-Daemon und dem Client herzustellen. Dies kann entweder über eine Netzwerkschnittstelle oder UNIX-Sockets erfolgen.
Lassen Sie uns nun die Docker-Architekturkomponenten im Detail besprechen.
Lesen Sie auch: Warum Full-Stack-Entwickler werden?
1. Docker-Host
Ein Docker-Host ist für die Ausführung des Docker-Daemons verantwortlich. Docker Daemon unterhält API-Anforderungen, einschließlich Docker-Build und Docker-Run unter anderem. Es verwaltet auch Bilder, Netzwerke, Container und andere Docker-Objekte. Daemons können miteinander kommunizieren, um verschiedene Docker-Dienste zu verwalten.
2. Docker-Client
Es ist nichts anderes als die Methode, die Benutzer verwenden, um mit Docker zu interagieren. Der Docker-Client sendet unsere Anforderungen, z. B. docker run, und Docker-Builds an den Docker-Daemon. Ein sehr wichtiges Merkmal des Docker-Clients ist, dass er mit mehreren Daemons kommunizieren kann.
3. Docker-Registrierung
Eine Registrierung ist eine serverseitige Anwendung, die skalierbar und zustandslos ist. Es speichert nicht nur Docker-Images, sondern ermöglicht es Entwicklern, sie auch zu verteilen. Docker bietet uns die Flexibilität, unsere eigenen Images zu erstellen, oder es stehen öffentliche Registrierungen zur Verfügung, die wir nutzen können. Zu diesen Registrierungen gehören unter anderem Docker Cloud und Docker Hub .
Die Konfiguration von Docker ist so, dass es sich immer an Docker Hub und andere öffentliche Registrierungsstellen wendet, um nach Bildern zu suchen. Wir haben jedoch die Möglichkeit, eine eigene Registrierung zu erstellen. So können wir die erforderlichen Images mithilfe unserer eigenen Registrierungen mit Hilfe der Docker-Run- und Docker-Pull-Befehle abrufen. Der Docker-Push-Befehl überträgt das erforderliche Image in die von uns erstellte Registrierung.

4. Docker-Objekte
Wir verwenden und erstellen mehrere Objekte, während wir Docker verwenden. Zu diesen Objekten gehören Container, Bilder, Plug-ins, Volumes, Netzwerke und andere.
5. Docker-Images
Ein Docker-Image ist nichts anderes als eine schreibgeschützte Vorlage, die uns die erforderlichen Anweisungen zum Erstellen eines Containers bereitstellt. Bei vielen Gelegenheiten hat ein Bild eine Verbindung zu einem anderen Bild. Was zwei Bilder unterscheidet, ist die zusätzliche Anpassungsebene. Anders ausgedrückt kann ein Image auch als unveränderlicher Schnappschuss eines Containers definiert werden. Bilder sind klein, leicht und schnell.
6. Docker-Container
Lassen Sie uns einen anderen Ansatz verfolgen, um Docker-Container zu verstehen. Wenn also ein Bild zur Darstellung einer Klasse verwendet werden könnte, könnte ein Container ihre Instanz sein. Mit anderen Worten, ein Container ist ein Laufzeitobjekt. Wir können Container mit Hilfe von Docker CLI oder API erstellen, starten, verschieben, stoppen oder löschen. Container können auch an Speicher angehängt und mit einem oder mehreren Netzwerken verbunden werden. Je nach aktuellem Zustand eines Containers können wir auch ein neues Image erstellen.
Fazit
Jetzt, da Sie wissen, was die Docker-Architektur und ihre Komponenten sind, können Sie den Anstieg ihrer Popularität besser verstehen. Es vereinfacht das Infrastrukturmanagement und trägt dazu bei, Instanzen schneller, leichter und widerstandsfähiger zu machen.
Wenn Sie mehr über Full-Stack-Codierung erfahren möchten, schauen Sie sich das PG-Diplom in Full-Stack-Softwareentwicklung von upGrad & IIIT-B an, das für Berufstätige konzipiert ist und mehr als 500 Stunden strenges Training, mehr als 9 Projekte und Aufgaben bietet. IIIT-B-Alumni-Status, praktische, praktische Abschlussprojekte und Arbeitsunterstützung bei Top-Unternehmen.