Heim > Betrieb und Instandhaltung > Docker > Eingehende Analyse der Docker-Dateischichtung (detaillierte Beispiele)

Eingehende Analyse der Docker-Dateischichtung (detaillierte Beispiele)

WBOY
Freigeben: 2022-01-28 17:09:33
nach vorne
3774 Leute haben es durchsucht

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!

Verwandte Etiketten:
Quelle:csdn.net
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage