Heim  >  Artikel  >  Betrieb und Instandhaltung  >  In welchem ​​Verzeichnis wird das von Docker kompilierte Image abgelegt?

In welchem ​​Verzeichnis wird das von Docker kompilierte Image abgelegt?

青灯夜游
青灯夜游Original
2022-05-11 12:14:2818691Durchsuche

Das Bild wird im Docker-Stammverzeichnis abgelegt. Der Inhalt der Bildebene befindet sich im Allgemeinen im Aufs-Pfad des Docker-Verzeichnisses. Die spezifische Adresse lautet „/var/lib/docker/aufs/“. Für jede Bildebene wird eine entsprechende JSON-Datei gespeichert. Der Pfad lautet „. /var/lib/docker /graph".

In welchem ​​Verzeichnis wird das von Docker kompilierte Image abgelegt?

Die Betriebsumgebung dieses Tutorials: Ubuntu 14.04-System, Docker-1.7.1-Version, Dell G3-Computer.

Docker-Image-Inhalt


Es wird immer ein erstes Mal geben, Docker-Image zu verstehen. Seitdem kann ich natürlich auch meinen eigenen Verständnisprozess mit Ihnen teilen:

  • Erster Kontakt mit Docker: Ich glaube, dass viele Enthusiasten das gleiche Verständnis haben werden wie ich: Docker-Image stellt den Dateisysteminhalt eines Containers dar

  • Erster Kontakt mit dem gemeinsamen Dateisystem: Das Konzept des Durch das gemeinsame Dateisystem wurde mir klar, dass die Bildebenenverwaltungstechnologie Teil des Inhalts des Containerdateisystems ist.

  • Untersuchen Sie die Beziehung zwischen Bildern und Containern: Container sind eine dynamische Umgebung, und die Dateien in jeder Bildebene sind statische Inhalte. ENV, VOLUME, CMD und andere Inhalte in der Docker-Datei müssen jedoch letztendlich statisch sein in die Ausführung der Containerumgebung implementiert, und diese Inhalte können nicht direkt in den Dateisysteminhalten gefunden werden, die in jeder Ebene des Bildes enthalten sind. Wie verwaltet Docker diesen Teil des Inhalts?

Darüber hinaus gibt es im dritten Schritt oben eine weitere Situation, die meiner Meinung nach jeder kennt. Die Größe vieler Bildebenen beträgt 0 und es gibt keinen Dateiinhalt innerhalb der Bildebene. Was ist los?

Sie können sich daran erinnern, dass in „Docker Image Detaillierte Diskussion (1): Container-Dateisystem“ über die Generierung leerer Bilder „Aktualisierung der JSON-Datei des Bildes“ erwähnt wurde. Tatsächlich deutet die im vorherigen Artikel dargelegte Vorahnung auf die Wahrheit hin: Der Docker-Bildinhalt besteht aus dem Inhalt der Bildebenendatei und der Bild-JSON-Datei. Unabhängig vom statischen Inhalt oder den dynamischen Informationen aktualisiert Docker ihn in der JSON-Datei.

Die JSON-Datei jeder Docker-Image-Ebene spielt eine sehr wichtige Rolle und ihre Hauptfunktionen sind wie folgt:

  • Inhalt im Zusammenhang mit dynamischen Containerinformationen im Docker-Image aufzeichnen

  • Vater und Sohn aufzeichnen Die tatsächliche Unterschiedsbeziehung zwischen Docker-Images

  • gleicht die Vollständigkeit des Docker-Image-Inhalts und das Fehlen dynamischer Inhalte aus

Die JSON-Datei des Docker-Images kann als Metadateninformation des Docker-Images betrachtet werden Bild, und seine Bedeutung kann nicht genug betont werden.

Docker-Image-Speicherort


Die theoretische Analyse des Docker-Image-Inhalts scheint etwas unklar zu sein, unabhängig von der Docker-Image-Layer-Datei oder der JSON-Datei, das Lesen ist etwas langweilig. Wenn Sie einen Blick auf die reale Umgebung in Docker werfen können, wird dies meiner Meinung nach eine große Hilfe für Ihr Verständnis der Spiegelungstechnologie sein.

Lassen Sie uns direkt zum Thema übergehen, beginnend mit der Speicherung von Docker-Images, und sehen, wo die Inhalte dieser Image-Layer-Dateien und der Image-JSON-Dateien gespeichert sind. (Die unten gezeigte experimentelle Umgebung: Das Host-Betriebssystem ist Ubuntu 14.04, die Docker-Version ist 1.7.1, der Graphdriver-Typ ist aufs und enthält nur ein Bild von Ubuntu:14.04.)

Sehen Sie sich die Zusammensetzung der Bildebene an

Wir können den Befehl „Docker History Ubuntu:14.04“ ausführen, um Ubuntu:14.04 anzuzeigen. Die Ergebnisse sind wie folgt:

In welchem ​​Verzeichnis wird das von Docker kompilierte Image abgelegt?

Das Bild zeigt, dass das Ubuntu:14.04-Bild 4 Bildebenen hat.

Speicherung von Dateiinhalten der Bildebene

Der Inhalt der Docker-Bildebene befindet sich im Allgemeinen unter dem Aufs-Pfad des Docker-Stammverzeichnisses, das heißt /var/lib/docker/aufs/ wie folgt:

In welchem ​​Verzeichnis wird das von Docker kompilierte Image abgelegt?

Die Abbildung zeigt den Inhalt der vier Bildebenen des Bildes ubuntu:14.04 sowie die Verzeichnisse der ersten Ebene innerhalb jeder Bildebene. Ein zusätzlicher Hinweis ist, dass sich in der Bildebene d2a0ecffe6fa nichts befindet.

Bild-JSON-Dateispeicherung

Für jede Bildebene speichert Docker eine entsprechende JSON-Datei. Der Speicherpfad der JSON-Datei lautet /var/lib/docker/graph, ubuntu:14.04 alle Bildebenen Der Speicherpfad der JSON-Datei wird unten angezeigt:

In welchem ​​Verzeichnis wird das von Docker kompilierte Image abgelegt?

Zusätzlich zur JSON-Datei können Sie auch sehen, dass jede Bildebene auch eine Layersize-Datei enthält, die hauptsächlich die Gesamtgröße des Dateiinhalts innerhalb der Bildebene aufzeichnet. Nachdem wir nun über die Image-JSON-Datei gesprochen haben, wird unten die JSON-Datei der hohlen Image-Ebene d2a0ecffe6fa von Ubuntu:14.04 gepostet:

In welchem ​​Verzeichnis wird das von Docker kompilierte Image abgelegt?

Seit dem entsprechenden Dockerfile-Befehl davon Die Bildebene ist CMD, der Inhalt der Bildebene ist leer. Durch Ändern der JSON-Datei der Bildebene wird das Cmd-Feld aktualisiert und der neue Cmd-Wert erhalten, sodass der aktualisierte Cmd verwendet werden kann, wenn der Container anschließend durchlaufen wird das Bild.

Empfohlenes Lernen: „Docker-Video-Tutorial

Das obige ist der detaillierte Inhalt vonIn welchem ​​Verzeichnis wird das von Docker kompilierte Image abgelegt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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