


Eingehende Analyse der Docker-Dateischichtung (detaillierte Beispiele)
Dieser Artikel vermittelt Ihnen relevantes Wissen über die Docker-Dateischichtung. In diesem Artikel werden einige Prinzipien der Docker-Dateischichtung beschrieben.
Wissensvorbereitung
- Docker nutzt tatsächlich einige Funktionen des Linux-Kernels, um eine Ressourcenisolation zu erreichen. Das Dateisystem ist eines davon, aber um Ressourcen effizienter zu machen, verwendet Docker eine hierarchische Dateisystemstruktur um das Dateisystem des Containers zu implementieren.
- Ich persönlich denke, dass das Prinzip ein bisschen dem Konzept der Paralleluniversen ähnelt. Manche Leute glauben, dass es in unserem Universum Paralleluniversen gibt, das heißt, dass die verschiedenen Entscheidungen, die wir treffen, unterschiedliche Universen verteilen und weiterlaufen kann zwischen diesen Paralleluniversen schwimmen. Hier ist es etwas ähnlich: Nachdem wir ein Image gepackt und über Docker Run ausgeführt haben, wird auf dieser Basis tatsächlich ein anderes Universum erstellt. Während der Container weiter ausgeführt wird, ist der Inhalt des Containers derselbe wie der des Originalimages. Die Dinge werden viele Abweichungen und Unterschiede aufweisen und nach und nach ein eigenes Universum bilden.
Docker-Dateisystem
Sie können den Dateisystem-Layering-Status jedes Containers von docker inspect [container-id] --format={{.GraphDriver}}
{map[LowerDir:/var/lib/docker/overlay2/52f456f455215e56b77087495a5d35323fbf1c0e0391f45349f386006c75865b-init/diff:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/diff MergedDir:/var/lib/docker/overlay2/52f456f455215e56b77087495a5d35323fbf1c0e0391f45349f386006c75865b/merged UpperDir:/var/lib/docker/overlay2/52f456f455215e56b77087495a5d35323fbf1c0e0391f45349f386006c75865b/diff WorkDir:/var/lib/docker/overlay2/52f456f455215e56b77087495a5d35323fbf1c0e0391f45349f386006c75865b/work] overlay2}
Es gibt hauptsächlich vier Typen
LowerDir
Das bedeutet, dass alle auf diesem Image basierenden Container auf dasselbe Dateisystem verweisen, das die Image-Ebene darstellt. Alle Container verwenden diese Ebene.
Woher kommt diese Ebene? Wir können uns das Bild ansehen, das wir verwenden
MergedDir
Dies ist ein anderer Container, der die untere Ebene und die obere Ebene kombiniert, um das endgültige Dateisystem im Container bereitzustellen
UpperDir
Dies dient dazu, die Vorgänge verschiedener Container aufzuzeichnen. Anschließend kann durch den Vergleich der unteren Ebene eine Zusammenführungsebene generiert werden der Spiegelschicht
docker run -d alpine:latest
docker inspect alpine --format={{.GraphDriver}}
Beachten Sie, dass UpperDir die obere Ebene des Bildes ist, das heißt, wir können auf dieser Ebene Änderungen vornehmen, die sich auf den später erstellten Container auswirken
Zeigen Sie die Dateisysteminformationen des Containers an
{map[MergedDir:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/merged UpperDir:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/diff WorkDir:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/work] overlay2}
docker inspect 9a118484ba --format={{.GraphDriver}}
Sie Sie können die untere Ebene des Containers sehen, d. h. In der oberen Ebene des Bildes werden die von uns am Container vorgenommenen Änderungen in der oberen Ebene widergespiegelt und die zusammengeführte Ebene wird organisiert und im Container angezeigt.
Wir können die Änderungen im Container-Dateisystem über die Befehlszeile überprüfen
{map[LowerDir:/var/lib/docker/overlay2/3d3f32727c4f7867d43c1e61d635ac0ed22e95ff39c66240166dd6614b81fe14-init/diff:/var/lib/docker/overlay2/e4b90240aa77212dde6499a49c421d26977ed9fe8a1f6fcbaaaf77d85c67654e/diff MergedDir:/var/lib/docker/overlay2/3d3f32727c4f7867d43c1e61d635ac0ed22e95ff39c66240166dd6614b81fe14/merged UpperDir:/var/lib/docker/overlay2/3d3f32727c4f7867d43c1e61d635ac0ed22e95ff39c66240166dd6614b81fe14/diff WorkDir:/var/lib/docker/overlay2/3d3f32727c4f7867d43c1e61d635ac0ed22e95ff39c66240166dd6614b81fe14/work] overlay2}
Da wir den Container nicht bedient haben, gibt es keinen Unterschied zwischen diesem Container und dem Image
Wir starten einen anderen Container und lassen ihn für 300 schlafen Gehen Sie dann in den Container, um einige Dateiinformationen zu ändern
docker diff 9a118484ba
Überprüfen Sie die Änderungen im Container-Dateisystem
# docker exec -it ca91bb /bin/sh / # echo "helloWorld" > /tmp/hello.txt
Sie können sehen, dass diese Änderungen, die wir am Dateisystem vorgenommen haben, aufgezeichnet wurden
Diese Inhalte befinden sich tatsächlich im Verzeichnis von UpperDir
docker diff ca91bbffb801 C /root C /root/.ash_history C /tmp A /tmp/hello.txt
Ändern Sie den Containerinhalt vom Host
Aus den obigen Experimenten können wir erkennen, dass die obere Ebene der hinzugefügte Inhalt ist und mit der unteren Ebene zusammengeführt wird, um die Änderungen im Container widerzuspiegeln. Können wir also die obere Ebene direkt ändern, um den Container zu betreiben?
Wir fügen ein Verzeichnis demo in dem Verzeichnis hinzu, in dem sich Upper befindet, und berühren eine Datei darin Wenn wir diesen Container initialisieren möchten, können wir den gesamten Inhalt der oberen Ebene direkt löschen.
- Anwendung
-
Software-Installationsspuren finden
Im Verlauf früherer Projekte mussten Kunden uns immer mitteilen, welche Inhalte unsere Agentensoftware ändern wird, aber wir haben nie einen besseren Weg gefunden, den Kunden bereitzustellen Durch die Anwendung dieser Docker-Layer-Datei können wir den Agenten in einem Container bereitstellen und dann auf einen Blick klar erkennen, welche Verzeichnisse und Dateien die Software ändern wird.
... Video-Tutorial
》
Das obige ist der detaillierte Inhalt vonEingehende Analyse der Docker-Dateischichtung (detaillierte Beispiele). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Vier Möglichkeiten zum Beenden von Docker Container: Verwenden Sie Strg D im Befehl Container Terminal ENGEBOT IM Container Terminal verwenden Sie Docker Stop & lt; container_name & gt; Befehl verwenden Sie Docker Kill & lt; container_name & gt; Befehl im Host -Terminal (Force Exit)

Methoden zum Kopieren von Dateien in externen Hosts in Docker: Verwenden Sie den Befehl Docker CP: Docker CP [Optionen] & lt; Containerpfad & gt; & lt; Host -Pfad & gt;. Verwenden von Datenvolumina: Erstellen Sie ein Verzeichnis auf dem Host und verwenden Sie den Parameter -V, um das Verzeichnis in den Container zu montieren, um den Container zu erstellen, um eine bidirektionale Dateisynchronisation zu erreichen.

Die Schritte zur Aktualisierung eines Docker -Images sind wie folgt: Ziehen Sie das neueste Bild -Tag. Neues Bild Löschen Sie das alte Bild für ein bestimmtes Tag (optional) den Container neu (falls erforderlich) neu starten Sie neu (falls erforderlich).

Sie können den Namen des Docker -Containers abfragen, indem Sie den Schritten folgen: Alle Container auflisten (Docker PS). Filtern Sie die Containerliste (unter Verwendung des GREP -Befehls). Ruft den Containernamen ab (befindet sich in der Spalte "Namen").

So starten Sie den Docker -Container neu: Holen Sie sich die Container -ID (Docker PS); Stop den Container (Docker Stop & lt; Container_id & gt;); Starten Sie den Container (Docker start & lt; container_id & gt;); Stellen Sie sicher, dass der Neustart erfolgreich ist (Docker PS). Andere Methoden: Docker Compose (Docker-Compose Neustart) oder Docker-API (siehe Docker-Dokumentation).

Docker Process Viewing -Methode: 1. Docker Cli -Befehl: Docker PS; 2. SYSTEMD CLI -Befehl: SystemCTL Status Docker; 3.. Docker Compose CLI Command: Docker-Compose PS; 4. Process Explorer (Windows); 5. /proc -Verzeichnis (Linux).

Der Prozess des Startens von MySQL in Docker besteht aus den folgenden Schritten: Ziehen Sie das MySQL -Image zum Erstellen und Starten des Containers an, setzen

Wie benutze ich Docker Desktop? Docker Desktop ist ein Werkzeug zum Ausführen von Docker -Containern auf lokalen Maschinen. Zu den zu verwendenden Schritten gehören: 1.. Docker Desktop installieren; 2. Start Docker Desktop; 3.. Erstellen Sie das Docker -Bild (mit Dockerfile); 4. Build Docker Image (mit Docker Build); 5. Docker -Container ausführen (mit Docker Run).
