Inhaltsverzeichnis
Wissensvorbereitung
Docker-Dateisystem
LowerDir
MergedDir
UpperDir
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
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
Wir starten einen anderen Container und lassen ihn für 300 schlafen Gehen Sie dann in den Container, um einige Dateiinformationen zu ändern
Heim Betrieb und Instandhaltung Docker Eingehende Analyse der Docker-Dateischichtung (detaillierte Beispiele)

Eingehende Analyse der Docker-Dateischichtung (detaillierte Beispiele)

Jan 28, 2022 pm 05:09 PM
docker

Dieser Artikel vermittelt Ihnen relevantes Wissen über die Docker-Dateischichtung. In diesem Artikel werden einige Prinzipien der Docker-Dateischichtung beschrieben.

Eingehende Analyse der Docker-Dateischichtung (detaillierte Beispiele)

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}
Nach dem Login kopieren

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
Nach dem Login kopieren
docker inspect alpine --format={{.GraphDriver}}
Nach dem Login kopieren

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}
Nach dem Login kopieren
docker inspect 9a118484ba --format={{.GraphDriver}}
Nach dem Login kopieren

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}
Nach dem Login kopieren

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
Nach dem Login kopieren

Überprüfen Sie die Änderungen im Container-Dateisystem

# docker exec -it ca91bb /bin/sh

/ # echo "helloWorld" > /tmp/hello.txt
Nach dem Login kopieren

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
Nach dem Login kopieren

Ä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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verlassen Sie den Container mit Docker So verlassen Sie den Container mit Docker Apr 15, 2025 pm 12:15 PM

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)

So kopieren Sie Dateien in Docker nach außen So kopieren Sie Dateien in Docker nach außen Apr 15, 2025 pm 12:12 PM

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.

So aktualisieren Sie das Bild von Docker So aktualisieren Sie das Bild von Docker Apr 15, 2025 pm 12:03 PM

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).

So überprüfen Sie den Namen des Docker -Containers So überprüfen Sie den Namen des Docker -Containers Apr 15, 2025 pm 12:21 PM

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 Docker neu So starten Sie Docker neu Apr 15, 2025 pm 12:06 PM

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).

So sehen Sie den Docker -Prozess So sehen Sie den Docker -Prozess Apr 15, 2025 am 11:48 AM

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).

So starten Sie MySQL von Docker So starten Sie MySQL von Docker Apr 15, 2025 pm 12:09 PM

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

So verwenden Sie Docker Desktop So verwenden Sie Docker Desktop Apr 15, 2025 am 11:45 AM

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).

See all articles