Machen wir uns mit der Docker-Architektur und ihren wesentlichen Komponenten vertraut.
Ich gehe davon aus, dass Sie ein grundlegendes Verständnis von Docker haben. Wenn nicht, können Sie sich darauf beziehen dieser vorherige Artikel.
Ich glaube, Sie verstehen die Bedeutung von Docker in DevOps. Jetzt muss hinter diesem fantastischen Werkzeug eine erstaunliche, gut durchdachte Architektur stehen. Ist es nicht?
Aber bevor ich darüber spreche, lassen Sie mich die früheren und aktuellen Virtualisierungssysteme vorstellen.
Traditional vs. New-Generation Virtualization
Früher haben wir virtuelle Maschinen erstellt, und jede VM hatte ein Betriebssystem, das viel Platz beanspruchte und es schwer machte.
Im Fall eines Docker-Containers haben Sie jetzt ein einziges Betriebssystem, und die Ressourcen werden von den Containern gemeinsam genutzt. Daher ist es leicht und bootet in Sekunden.

Docker Architecture
Unten sehen Sie das einfache Diagramm einer Docker-Architektur.

Lassen Sie mich Ihnen die Komponenten einer Docker-Architektur erklären.
Docker-Engine
Es ist der Kern des gesamten Docker-Systems. Docker Engine ist eine folgende Anwendung Client-Server-Architektur. Es ist auf dem Host-Computer installiert. Die Docker Engine besteht aus drei Komponenten:
- Server: Es heißt der Docker-Daemon Dockerd. Es kann Docker-Images erstellen und verwalten. Container, Netzwerke usw.
- Rest API: Es wird verwendet, um den Docker-Daemon anzuweisen, was zu tun ist.
- Befehlszeilenschnittstelle (CLI): Es ist ein Client, der zur Eingabe verwendet wird Docker-Befehle.
Docker-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 Daemon kommunizieren.
Docker-Register
Dies ist der Ort, an dem die Docker-Bilder gespeichert werden. Dies kann eine öffentliche Docker-Registrierung oder eine private Docker-Registrierung sein. Docker Hub ist der Standardort für Docker-Images, die öffentliche Registrierung der Stores. Sie können auch eigene erstellen und ausführen private Registrierung.
Wenn Sie Docker Pull- oder Docker Run-Befehle ausführen, wird das erforderliche Docker-Image aus der konfigurierten Registrierung abgerufen. Wenn Sie den Docker-Push-Befehl ausführen, wird das Docker-Image in der konfigurierten Registrierung gespeichert.
Docker-Objekte
Wenn Sie mit Docker arbeiten, verwenden Sie Images, Container, Volumes und Netzwerke. All dies sind Docker-Objekte.
Bilder
Docker-Images sind schreibgeschützte Vorlagen mit Anweisungen zum Erstellen eines Docker-Containers. Das Docker-Image kann von einem Docker-Hub abgerufen und unverändert verwendet werden, oder Sie können dem Basis-Image zusätzliche Anweisungen hinzufügen und ein neues und geändertes Docker-Image erstellen. Sie können Ihre eigenen Docker-Bilder auch mit a erstellen Docker-Datei. Erstellen Sie eine Docker-Datei mit allen Anweisungen zum Erstellen und Ausführen eines Containers. Es wird Ihr benutzerdefiniertes Docker-Image erstellt.
Das Docker-Image verfügt über eine schreibgeschützte Basisebene, und die oberste Ebene kann geschrieben werden. Wenn Sie eine Docker-Datei bearbeiten und neu erstellen, wird nur der geänderte Teil in der obersten Ebene neu erstellt.
Behälter
Nachdem Sie ein Docker-Image ausgeführt haben, wird ein Docker-Container erstellt. Alle Anwendungen und ihre Umgebung werden in diesem Container ausgeführt. Sie können die Docker-API oder CLI verwenden, um einen Docker-Container zu starten, zu stoppen und zu löschen.
Unten finden Sie einen Beispielbefehl zum Ausführen eines Ubuntu-Docker-Containers:
docker run -i -t ubuntu /bin/bash
Volumes
Die vom Docker generierten und von Docker-Containern verwendeten persistenten Daten werden in Volumes gespeichert. Sie werden vollständig von Docker über die Docker-CLI oder die Docker-API verwaltet. Volumes funktionieren sowohl auf Windows- als auch auf Linux-Containern. Anstatt Daten in der beschreibbaren Ebene eines Containers zu speichern, ist es immer eine gute Option, Volumes dafür zu verwenden. Der Inhalt des Volumes befindet sich außerhalb des Lebenszyklus eines Containers, sodass die Verwendung des Volumes die Größe eines Containers nicht erhöht.
Sie können das Flag -v oder –mount verwenden, um einen Container mit einem Volume zu starten. In diesem Beispielbefehl verwenden Sie das Geekvolume-Volume mit dem Geekflare-Container.
docker run -d --name geekflare -v geekvolume:/app nginx:latest
Netzwerke
Das Docker-Netzwerk ist ein Durchgang, über den alle isolierten Container kommunizieren. Docker enthält hauptsächlich fünf Netzwerktreiber:
- Bridge: Dies ist der Standard-Netzwerktreiber für einen Container. Sie verwenden dieses Netzwerk, wenn Ihre Anwendung auf eigenständigen Containern ausgeführt wird, dh auf mehreren Containern, die mit demselben Docker-Host kommunizieren.
- Gastgeber: Dieser Treiber entfernt die Netzwerkisolation zwischen Docker-Containern und Docker-Host. Es wird verwendet, wenn Sie keine Netzwerkisolation zwischen Host und Container benötigen.
- Auflage: Dieses Netzwerk ermöglicht es Schwarmdiensten, miteinander zu kommunizieren. Es wird verwendet, wenn die Container auf verschiedenen Docker-Hosts ausgeführt werden oder wenn Schwarmdienste von mehreren Anwendungen gebildet werden.
- Andere: Dieser Treiber deaktiviert das gesamte Netzwerk.
- Macvlan: Dieser Treiber weist Containern eine Mac-Adresse zu, damit sie wie physische Geräte aussehen. Der Datenverkehr wird zwischen Containern über ihre Mac-Adressen geleitet. Dieses Netzwerk wird verwendet, wenn die Container beispielsweise während der Migration eines VM-Setups wie ein physisches Gerät aussehen sollen.
Conclusion
Ich hoffe, dies gibt Ihnen eine Vorstellung von der Docker-Architektur und ihren wesentlichen Komponenten. Navigieren Sie in Docker, um mehr zu erfahren. Wenn Sie an praktischen Schulungen interessiert sind, lesen Sie diese Informationen Docker Mastery Kurs.