Inhaltsverzeichnis- Docker-Images
- Was ist ein Spiegel?
- Prinzip des Ladens von Docker-Images
- Spiegeln
- Zusammenfassung der Docker-Images
Docker-Images Was ist ein Spiegel?- Ein Image ist eine leichte, ausführbare Standalone-Softwarepaket für Vorgefertigte Software-Laufzeitumgebung und auf der Grundlage der Laufzeitumgebung entwickelte Software, die die zum Ausführen einer bestimmten Software erforderliche Software enthält Alles, einschließlich
代碼 , Laufzeit,庫 ,環境變量 und配置文件 . - Alle Anwendungen können direkt in Docker-Images gepackt und ausgeführt werden!
- Wie bekomme ich das Bild?
Remote-Repository-Download Freund kopieren Erstellen Sie selbst ein gespiegeltes DockerFile Prinzip des Ladens von Docker-Images UnionFS
- UnionFS: Union File System (UnionFS) ist ein
分層 ,輕量級 und高性能 Dateisystem, das die schichtweise Überlagerung von Dateisystemänderungen als einzelnes Commit unterstützt und mehrere Verzeichnisse in einem einzigen virtuellen Dateisystem vereinen kann. Das Union-Dateisystem ist die Grundlage von Docker-Images. Images können durch Layering vererbt werden. Auf Basis des Basisimages (ohne übergeordnetes Image) können verschiedene anwendungsspezifische Images erstellt werden. - Funktionen: Einmalig Laden Sie mehrere Dateisysteme gleichzeitig, aber von außen ist nur ein Dateisystem sichtbar. Beim gemeinsamen Laden werden alle Dateisysteme auf unterschiedlichen Ebenen geladen. Überlagert, also Das endgültige Dateisystem enthält alle zugrunde liegenden Dateien und Verzeichnisse
Docker鏡像加載原理
- Das Docker-Image besteht tatsächlich aus Schichten von Dateisystemen, wie beispielsweise UnionFS.
- Bootfs (Boot-Dateisystem) umfasst hauptsächlich Bootloader und Kernel. Der Bootloader bootet und lädt hauptsächlich den Kernel. Wenn Linux gerade gestartet wird, wird das Bootfs-Dateisystem geladen. Die unterste Ebene des Docker-Images ist Boot. Diese Schicht ist dieselbe wie bei unserem typischen Linux/UNIX-System, einschließlich des Bootloaders und des Kernels. Wenn der Bootvorgang geladen wird, befindet sich der gesamte Kernel im Speicher. Zu diesem Zeitpunkt wurde das Recht zur Verwendung des Speichers von BootFS auf den Kernel übertragen, und das System entlädt auch BootFS.
- Roots (Root-Dateisystem), über BootFS. Enthält Standardverzeichnisse und -dateien wie /dev, /proc, /bin, /etc in einem typischen Linux-System. rootfs bezieht sich auf verschiedene Betriebssystemdistributionen wie Ubuntu, Centos usw.

Normalerweise ist CentOS , das wir in einer virtuellen Maschine installieren, mehrere GB groß. Warum sind es bei Docker nur 200 MB? 
- Für ein optimiertes Betriebssystem kann das Root-Dateisystem sehr klein sein und muss nur die grundlegendsten Befehle, Tools und Programmbibliotheken enthalten, da die darunterliegende Schicht den Host-Kernel selbst direkt verwendet und nur Roots bereitstellen muss. Es ist ersichtlich, dass BootFS bei verschiedenen Linux-Distributionen grundsätzlich gleich ist, RootFS jedoch unterschiedlich sein kann, sodass verschiedene Distributionen BootFS gemeinsam nutzen können.
- Virtuelle Maschinen befinden sich auf der Minutenebene, Container auf der zweiten Ebene!
Docke in Schichten verstehen Schichtdenken: Schicht für Schicht herunterladen, Schicht für Schicht prüfen, überspringen wenn vorhanden, andernfalls herunterladen
[root@docker ~]# Docker zieht Redis
Standard-Tag verwenden: latest
aktuellstes: Aus Bibliothek/Redis ziehen
69692152171a: Existiert bereits
a4a46f2fd7e0: Ziehen abgeschlossen
bcdf6fddc3bd: Pull abgeschlossen
2902e41faefa: Ziehen abgeschlossen
df3e1d63cdb1: Ziehen abgeschlossen
fa57f005a60d: Ziehen abgeschlossen
Digest: sha256:7e2c6181ad5c425443b56c7c73a9cd6df24a122345847d1ea9bb86a5afc76325
Status: Neueres Image für redis:latest heruntergeladen
docker.io/library/redis:latest - Warum verwendet das Docker-Image diese Schichtenstruktur?
- Der größte Vorteil ist meiner Meinung nach die gemeinsame Nutzung von Ressourcen! Wenn beispielsweise mehrere Images aus demselben Basisimage erstellt werden, muss der Host nur ein Basisimage auf der Festplatte speichern und nur ein Basisimage muss in den Speicher geladen werden, damit es alle Container bedienen kann und jede Ebene des Images gemeinsam genutzt werden kann.
- Die Bildschichtung kann über
docker image inspect +容器 angezeigt werden! -
Layers beobachten

Die Bedeutung der Schichtung verstehen - Alle Docker-Images sind Wenn Sie von einer Basisbildebene aus Änderungen vornehmen oder neue Inhalte hinzufügen, Erstellen Sie eine neue Bildebene über der aktuellen Bildebene.
- Um ein einfaches Beispiel zu geben: Wenn Sie ein neues Image basierend auf Ubuntu Linux 16.04 erstellen, ist dies die erste Ebene des neuen Images. Wenn Sie dem Image ein Python-Paket hinzufügen, wird über der Basis-Image-Ebene eine zweite Image-Ebene erstellt. Wenn Sie weiterhin einen Sicherheitspatch hinzufügen, wird eine dritte Image-Ebene erstellt.
- Das Bild enthält derzeit 3 Bildebenen, wie in der Abbildung unten gezeigt (dies ist nur ein sehr einfaches Beispiel zur Demonstration).

Es ist wichtig zu verstehen, dass das Bild zwar hinzugefügt wird, das Bild jedoch immer eine Kombination aller aktuellen Bilder bleibt. Die folgende Abbildung zeigt ein einfaches Beispiel, bei dem jede Bildebene drei Dateien enthält und das Bild sechs Dateien aus zwei Bildebenen enthält. 
- Die Bildebene im obigen Bild unterscheidet sich geringfügig von der vorherigen. Der Hauptzweck besteht darin, die Anzeige von Dateien zu erleichtern.
- Die folgende Abbildung zeigt ein etwas komplexes dreischichtiges Bild. Von außen betrachtet besteht das gesamte Bild nur aus 6 Dateien. Dies liegt daran, dass Datei 7 in der obersten Schicht eine aktualisierte Version von Datei 5 ist.

- In diesem Fall überschreiben die Dateien der oberen Bildebene die Dateien der unteren Bildebene. Dadurch wird die aktualisierte Version der Datei als neue Bildebene zum Bild hinzugefügt.
- Docker implementiert den Image-Layer-Stack über die Speicher-Engine (die neue Version nutzt dazu den Snapshot-Mechanismus) und sorgt dafür, dass mehrere Image-Layer als einheitliches Dateisystem dargestellt werden.
- Die unter Linux verfügbaren Speicher-Engines sind AUFS, Overlay2, Device Mapper, Btrfs und ZFS. Wie der Name schon sagt, basiert jede Speicher-Engine auf der entsprechenden Dateisystem- oder Blockgerätetechnologie in Linux und jede Speicher-Engine verfügt über ihre eigenen einzigartigen Leistungsmerkmale.
- Docker unterstützt unter Windows nur eine Speicher-Engine: Windowsfilter, das Layering und CoW basierend auf dem NTFS-Dateisystem implementiert[1].
- Die folgende Abbildung zeigt dasselbe dreischichtige Bild wie die Systemanzeige. Alle Bildebenen werden gestapelt und zusammengeführt, um der Außenwelt eine einheitliche Ansicht zu bieten.

Mehrschichtiger Download Nutzen Vorausgesetzt, die Schichten einiger Anwendungen sind gleich, können sie direkt wiederverwendet werden! Merkmale - Docker-Images sind Nur lesbar, beim Starten des Containers wird eine neue beschreibbare Ebene über das Image geladen!
- Diese Schicht ist das, was wir normalerweise als Containerschicht (Ausführen) bezeichnen, und alles unterhalb des Containers wird als Imageschicht (Remote Pull) bezeichnet!
- Alle Operationen basieren auf
容器層

Spiegeln- Wie reiche ich einen Spiegel ein?
-
Docker commit
Docker Commit übergibt den Container an eine neue Kopie. Docker Commit -m="committed description" -a="author" Container-ID Name des Ziel-Images: [TAG]
#Führen Sie ein Standard-Tomcat-Image aus [root@docker ~]# docker run -it -p 8080:8080 tomcat
[root@docker ~]# docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
792ca37197e8 Tomcat „catalina.sh run“ vor 34 Sekunden. Aktiv seit 32 Sekunden. 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp upbeat_mcnulty
[root@docker ~]# docker exec -it 792ca37197e8 /bin/bash
#Es wurde festgestellt, dass dieser Standard-Tomcat keine Webapps-Anwendung hat. Aufgrund der Spiegelung hat die offiziell gespiegelte Standard-Webapps keine Dateien. Kopieren Sie die Basisdateien selbst root@792ca37197e8:/usr/local/tomcat# cp -r webapps.dist/* webapps
#Browserzugriff, Test erfolgreich http://192.168.100.100:8080/
#Senden Sie den geänderten Container, damit er ein neues Image wird [root@docker ~]# docker commit -a="pakho" -m="add webapps app" 792ca37197e8 tomcat02:1.0
sha256:d6d429f9d2ba25af8f66bd3e7a7de489cf2219828ea755ce1d0a1a7816c27731
[root@docker ~]# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
tomcat02 1.0 d6d429f9d2ba vor 28 Sekunden 672 MB Zusammenfassung der Docker-Images 
- Die Hauptfunktionen von Docker-Images sind Schichtung, Copy-on-Write, Inhaltsadressierung und Union-Mounting.
- Docker-Images sind die Grundlage für den Betrieb von Docker-Containern. Ohne Docker-Images kann es keine Docker-Container geben. Dies ist auch eines der Designprinzipien von Docker.
- Es ist verständlich, dass ein Docker-Image letztlich ein Image und somit statischer Inhalt ist. Bei einem Docker-Container ist das anders, da es sich hier um dynamischen Inhalt handelt. Wenn es um dynamische Inhalte geht, denken die Leute sofort an Dinge wie Prozesse, Speicher, CPU usw. Tatsächlich enthalten Docker-Container als dynamischen Inhalt diese
- Zum leichteren Verständnis können Sie sich einen Docker-Container als einen oder mehrere laufende Prozesse vorstellen, und diese laufenden Prozesse belegen den entsprechenden Speicher, die entsprechenden CPU-Rechenressourcen, die entsprechenden virtuellen Netzwerkgeräte und die entsprechenden Dateisystemressourcen. Die vom Docker-Container belegten Dateisystemressourcen werden durch die Image-Layer-Datei des Docker-Image bereitgestellt.
Das Obige ist der detaillierte Inhalt des Docker-Image-Prinzips. Weitere Informationen zu Docker-Images finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:- Docker-Image-Erstellung und Paketierung und Bereitstellung des gesamten Projekts mit einem Klick
- Die Idee kombiniert Docker, um Image-Paketierung und Bereitstellung mit einem Klick zu realisieren
- So verwenden Sie ein Domestic Image Warehouse für Docker
- Lösung für das Problem, dass der Image-Name nach dem Laden des Dockers keiner ist
- Detaillierte Erklärung, wo das von Docker abgerufene Image gespeichert ist
- So verwenden Sie Docker zum lokalen Verpacken und Bereitstellen von Images
- So ändern Sie die inländische Imagequelle für Docker
|