Wie in der folgenden Abbildung dargestellt: Wenn wir virtuelle Maschinen und Docker verwenden, stellt sich eine Frage: Warum ist Docker schneller als VM? Das obige Bild veranschaulicht dieses Problem objektiv. 1. Docker hat weniger Abstraktionsebenen als virtuelle Maschinen. 2. Docker verwendet den Kernel des Hostcomputers, während VM das Gastbetriebssystem benötigt. Daher muss Docker beim Erstellen eines neuen Containers kein Betriebssystem neu laden wie eine virtuelle Maschine. Die virtuelle Maschine lädt das Gastbetriebssystem (was einige Minuten dauert), während Docker das Betriebssystem der Hostmaschine verwendet und diesen komplexen Vorgang (der einige Sekunden dauert) auslässt. Nachdem wir diese Punkte geklärt haben, schauen wir uns an, wie wir es auf der Clientseite verwenden. Zunächst müssen wir einige Begriffe verstehen: Host (Docker-Engine)Eine physische oder virtuelle Maschine, die zum Ausführen des Docker-Daemons und von Containern verwendet wird. Bild Was ist ein Docker-Image? Einfach ausgedrückt ist ein Docker-Image ein Linux-Dateisystem (Root FileSystem), das Programme enthält, die auf dem Linux-Kernel und den entsprechenden Daten ausgeführt werden können.
ContainerDie Beziehung zwischen einem Bild und einem Container ähnelt der zwischen einer Klasse und einer Instanz in der objektorientierten Programmierung. Ein Bild ist eine statische Definition und ein Container ist eine Entität zur Laufzeit des Bildes. Container können erstellt, gestartet, gestoppt, gelöscht, angehalten usw. werden. BildschichtungDocker unterstützt das Erstellen neuer Images durch die Erweiterung vorhandener Images. Tatsächlich werden 99 % der Images im Docker Hub durch die Installation und Konfiguration der erforderlichen Software im Basisimage erstellt. Wie aus der obigen Abbildung ersichtlich, wird das neue Bild durch schichtweises Stapeln des Basisbildes erzeugt. Jedes Mal, wenn Sie eine Software installieren, fügen Sie dem vorhandenen Image eine Ebene hinzu. Beschreibbare ContainerebeneBeim Start des Containers wird eine neue beschreibbare Ebene über das Image geladen. Diese Ebene wird üblicherweise als „Containerebene“ bezeichnet, und alles unterhalb der „Containerebene“ wird als „Bildebene“ bezeichnet. Alle Änderungen am Container – ob Hinzufügen, Löschen oder Ändern von Dateien – erfolgen nur auf Containerebene. Nur die Containerebene ist beschreibbar und alle Bildebenen unterhalb der Containerebene sind schreibgeschützt. Es kann eine große Anzahl von Bildebenen geben, und alle Bildebenen werden zu einem einheitlichen Dateisystem kombiniert. Wenn sich in unterschiedlichen Ebenen eine Datei mit demselben Pfad befindet, z. B. /a, überschreibt das /a in der oberen Ebene das /a in der unteren Ebene. Dies bedeutet, dass der Benutzer nur auf die Datei /a in der oberen Ebene zugreifen kann. In der Containerschicht sieht der Benutzer ein überlagertes Dateisystem. Daten werden nur kopiert, wenn sie geändert werden müssen. Diese Funktion wird Copy-on-Write genannt. Es ist ersichtlich, dass die Containerebene den geänderten Teil des Bildes speichert und keine Änderungen am Bild selbst vornimmt. Zusammenfassend lässt sich sagen: Die Containerebene zeichnet die Änderungen am Bild auf, alle Bildebenen sind schreibgeschützt und werden vom Container nicht geändert, sodass das Bild von mehreren Containern gemeinsam genutzt werden kann. VolumenTatsächlich ist unser Container wie eine vereinfachte Version eines Betriebssystems, mit dem Unterschied, dass das System nur die Umgebung installiert, die zum Ausführen unseres Programms erforderlich ist. Wie bereits erwähnt, kann unser Container gelöscht werden. Wenn er gelöscht wird, was sollen wir dann mit den Daten tun, die vom Programm im Container generiert und gespeichert werden müssen? Wenn der Container ausgeführt wird, können wir ihn aufrufen, um ihn anzuzeigen. Sobald der Container gelöscht ist, bleibt nichts übrig. Das Datenvolumen wird also verwendet, um dieses Problem zu lösen. Es wird verwendet, um Daten auf unserem Host-Rechner zu speichern und den Datenaustausch zwischen Containern zu realisieren. Einfach ausgedrückt ordnet es das Verzeichnis des Host-Rechners dem Verzeichnis im Container zu. Die Anwendung liest und schreibt Daten im Verzeichnis im Container und die Daten werden mit dem Host-Rechner synchronisiert. Auf diese Weise können die vom Container generierten Daten gespeichert werden. Beispielsweise kann unser Datenbankcontainer Daten auf der realen Festplatte unseres Host-Rechners speichern. RegistrierungDocker verwendet Registry, um benutzerdefinierte Bilder zu speichern. Es gibt zwei Arten von Registern: öffentliche und private. Docker Inc. betreibt ein öffentliches Register namens Docker Hub. Benutzer können bei Docker Hub ein Konto registrieren, um ihre eigenen Bilder zu teilen und zu speichern. Docker bietet ein öffentliches Image-Repository hub.docker.com (Docker nennt es Repository), das eine riesige Sammlung von Images zur Verwendung bereitstellt. Ein Docker-Register kann mehrere Repositorys enthalten; jedes Repository kann mehrere Tags enthalten; jedes Tag entspricht einem Image. Normalerweise enthält ein Repository Bilder verschiedener Versionen derselben Software und Tags entsprechen den verschiedenen Versionen der Software. Wir können das Format <Warehouse-Name>:<Bezeichnung> verwenden, um anzugeben, welche Version der Software das Spiegelbild ist. Wenn kein Tag angegeben ist, ist das Standardtag „latest“. Zusammenfassen Auf der offiziellen Docker-Website steht ein Satz wie dieser: „Build and Ship any Application Anywhere“. Zusammen mit dem, was wir gerade verstanden haben, lautet die Zusammenfassung: Einmal erstellen, überall ausführen. Durch die Kombination der oben genannten Technologien ergibt sich folgendes Endergebnis: Für die meisten Anwendungen können Entwickler Images über Docker Build erstellen, Images über Docker Push hochladen, Benutzer Images über Docker Pull herunterladen und Containeranwendungen mit Docker Run ausführen. Benutzer müssen sich nicht mehr darum kümmern, wie die Umgebung erstellt wird, wie die Installation verläuft oder wie Bibliothekskonflikte zwischen verschiedenen Distributionen gelöst werden. Außerdem werden in der Regel weder mehr Hardwareressourcen verbraucht, noch wird die Leistung erheblich beeinträchtigt. Oben finden Sie eine ausführliche Erläuterung der Funktionsweise und des Funktionsprinzips von Docker. Weitere Informationen zur Funktionsweise und zum Funktionsprinzip von Docker finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Lösung für das Problem, dass MySQL-Befehle nicht auf Chinesisch eingegeben werden können
>>: UrlRewriter-Caching-Probleme und eine Reihe damit verbundener Untersuchungen
Lösung für das Problem, dass das Ubuntu-Dualsyste...
Inhaltsverzeichnis Vorbereitende Vorbereitung Imp...
„Weniger ist mehr“ ist ein Schlagwort vieler Desi...
Grundlegende Syntax Sie können eine Ansicht mit d...
<br />Vorheriger Artikel: Sieben Prinzipien ...
Statistik der QPS-Werte der letzten N Sekunden (i...
conda aktualisieren conda pip installieren tf-nig...
Wie unten dargestellt: Der Testbefehl stellt fest...
Bei Verwendung des Layouts justify-content:space-...
Inhaltsverzeichnis Hintergrund Serverabhängigkeit...
1. Docker ps listet Container auf 2. Docker cp ko...
Legen Sie ein Hintergrundbild für die Tabelle fes...
In diesem Artikelbeispiel wird der spezifische JS...
Vorwort: Ich habe Warnungen zu wahnsinnig langsam...
In den vorherigen Artikeln wurde erläutert, wie S...