


Docker-Image-Prinzip: gemeinsames Dateisystem und mehrschichtiges Verständnis (detaillierte Beispiele)
Dieser Artikel vermittelt Ihnen relevantes Wissen über das gemeinsame Dateisystem und ein mehrschichtiges Verständnis der Docker-Spiegelungsprinzipien, einschließlich Fragen im Zusammenhang mit gemeinsamen Dateisystemen, hierarchischen Strukturen und mehrschichtigen Praktiken.
Docker - Union-Dateisystem und mehrschichtiges Verständnis des Spiegelungsprinzips
1. Union-Dateisystem
UnionFS (Union File System)
UnionFS (Union File System): Union File System (UnionFS) Es ist ein mehrschichtiges, leichtes und leistungsstarkes Dateisystem, das Schicht für Schicht als einzelne Übermittlung überlagert werden kann. Gleichzeitig können verschiedene Verzeichnisse in dasselbe virtuelle Dateisystem eingebunden werden ein einzelnes virtuelles Dateisystem). Das Union-Dateisystem ist die Basis von Docker-Images. Bilder können durch Layering vererbt werden. Basierend auf dem Basisbild (ohne übergeordnetes Bild) können verschiedene spezifische Anwendungsbilder erstellt werden.
Darüber hinaus können verschiedene Docker-Container einige grundlegende Dateisystemschichten gemeinsam nutzen und gleichzeitig ihre eigenen einzigartigen Änderungsschichten hinzufügen, was die Speichereffizienz erheblich verbessert.
Das in Docker verwendete AUFS (AnotherUnionFS) ist ein Union-Dateisystem. AUFS unterstützt das Festlegen von schreibgeschützten, schreibgeschützten und Whiteout-Berechtigungen für jedes Mitgliedsverzeichnis (ähnlich einem Git-Zweig). Gleichzeitig verfügt AUFS über ein Konzept, das Hierarchien ähnelt. Nur-Lese-Berechtigungen können logisch inkrementell geändert werden (ohne Auswirkungen). der schreibgeschützte Teil).
Docker unterstützt derzeit gemeinsame Dateisystemtypen, einschließlich AUFS, btrfs, vfs und DeviceMapper.
Funktionen: Laden Sie mehrere Dateisysteme gleichzeitig, aber von außen ist nur ein Dateisystem sichtbar. Beim gemeinsamen Laden wird jede Ebene von Dateisystemen überlagert, sodass das endgültige Dateisystem alle zugrunde liegenden Dateien und Verzeichnisse enthält. .
Basis-Image
Basis-Image bedeutet einfach, dass es nicht auf einem anderen Image basiert und vollständig darauf aufgebaut ist. Es kann mit dem Fundament eines Gebäudes und dem Urheber verglichen werden von Docker-Bildern.
Basisbild hat zwei Bedeutungen: (1) Es ist nicht von anderen Bildern abhängig und wird von Grund auf neu erstellt. (2) Andere Bilder können darauf basierend erweitert werden.
Was man also als Basis-Image bezeichnen kann, sind normalerweise Docker-Images verschiedener Linux-Distributionen wie Ubuntu, Debian, CentOS usw.
Prinzip des Ladens von Docker-Images
Das Image von Docker besteht tatsächlich aus einer Schicht von Dateisystemen, und diese Schicht des Dateisystems ist UnionFS.
Typisches Linux erfordert zum Starten und Ausführen zwei FSs, bootfs + rootfs:
bootfs (Boot-Dateisystem) umfasst hauptsächlich Bpotloader und Kernel. Linux lädt beim ersten Mal das Bootfs-Dateisystem startet, am unteren Rand des Docker-Images befindet sich bootfs. Diese Schicht ist die gleiche wie bei unserem typischen Linux/Unix-System, einschließlich des Bootloaders Bootloader und des Kernel-Kernels. Wenn das Booten abgeschlossen ist, befindet sich der gesamte Kernel im Speicher. Zu diesem Zeitpunkt wurde das Recht zur Nutzung des Speichers von bootfs auf den Kernel übertragen. Zu diesem Zeitpunkt deinstalliert das System auch bootfs.
rootfs (Root-Dateisystem), zusätzlich zu bootfs. Enthält Standardverzeichnisse und -dateien wie /dev, /proc, /bin, /etc usw. in typischen Linux-Systemen. Roots sind verschiedene Betriebssystemdistributionen wie Ubuntu, Centos usw.
Warum gibt es im Docker-Image keinen Kernel?
In Bezug auf die Bildgröße ist ein relativ kleines Image nur etwas mehr als 1 KB oder ein paar MB groß, während die Kerneldatei Dutzende MB benötigt, also keinen Kernel im Image Nach dem Start als Container wird der Kernel des Hosts direkt verwendet, und das Image selbst stellt nur die entsprechenden Rootfs bereit, bei denen es sich um das für den normalen Betrieb des Systems erforderliche User-Space-Dateisystem handelt /dev/, /proc, /bin, /etc Verzeichnis, daher gibt es grundsätzlich kein /boot-Verzeichnis im Container und /boot speichert Dateien und Verzeichnisse, die sich auf den Kernel beziehen.
Da der Start- und Ausführungsprozess des Containers direkt den Kernel des Hosts verwendet, ruft er die physische Hardware nicht direkt auf, sodass keine Hardwaretreiber beteiligt sind, sodass der Kernel und die Treiber nicht verwendet werden. Und wenn es um die Technologie virtueller Maschinen geht, verfügt jede virtuelle Maschine über einen eigenen unabhängigen Kernel Das Docker-Image wird auch in Schichten heruntergeladen. Nehmen Sie als Beispiel das Herunterladen des Redis-Images:
Warum übernimmt das Docker-Image diese Schichtstruktur?
Der größte Vorteil ist die gemeinsame Nutzung von Ressourcen. Wenn beispielsweise mehrere Images aus demselben Basisimage erstellt werden, muss der Host nur ein Basisimage auf der Festplatte behalten und nur ein Basisimage in den Speicher laden, damit es alle Container bedienen kann. und jede Ebene des Bildes kann geteilt werden.
Beschreibbare Containerebene
Docker-Bilder sind schreibgeschützt. Wenn der Container startet, wird eine neue beschreibbare Ebene über das Bild geladen.
Diese neue Ebene ist die beschreibbare Containerebene, und alles unter dem Container wird als Spiegelebene bezeichnet.
Docker verwendet eine Copy-on-Write-Strategie, um die Sicherheit des Basisimages sowie eine höhere Leistung und Speicherplatznutzung zu gewährleisten.
- Wenn der Container eine Datei lesen muss
Beginnen Sie mit der Suche nach unten und lesen Sie sie in den Speicher ein. Wenn sie sich bereits im Speicher befindet, können Sie sie direkt verwenden. Mit anderen Worten: Docker-Container, die auf demselben Computer ausgeführt werden, nutzen zur Laufzeit dieselben Dateien.
- Wenn der Container eine Datei ändern muss
Suchen Sie von oben nach unten, suchen Sie sie und kopieren Sie sie in die Containerebene. Für den Container können Sie die Datei in der Containerebene sehen, aber nicht die Datei in Bildebene und ändern Sie dann die Dateien direkt auf der Containerebene.
- Wenn der Container eine Datei löschen muss
Suchen Sie von oben nach unten und zeichnen Sie den Löschvorgang im Container auf. Es handelt sich nicht um einen echten Löschvorgang, sondern um einen sanften Löschvorgang. Dadurch wird die Bildgröße nur vergrößert, nicht verringert.
- Wenn der Container Dateien hinzufügen muss
Fügen Sie diese direkt zur obersten beschreibbaren Ebene des Containers hinzu, ohne die Bildebene zu beeinträchtigen.
Alle Änderungen am Container, egal ob das Hinzufügen, Löschen oder Ändern von Dateien, erfolgen nur in der Containerebene. Nur die Containerebene ist beschreibbar und alle Bildebenen unterhalb der Containerebene sind schreibgeschützt, sodass das Bild von mehreren Containern gemeinsam genutzt werden kann.
3. Layering-Praxis – verpflichten Sie sich, das Bild einzureichen.
Erstellen Sie einen Container durch das Bild, bedienen Sie dann die Containerebene, lassen Sie die Bildebene unverändert und packen Sie dann die bearbeitete Containerebene und die Bildebene zur Übermittlung in ein neues Bild.
Docker-Commit: Erstellen Sie ein neues Image mit einem Container.
Syntax:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS-Beschreibung:
- **-a*Der übermittelte Bildautor;
- **-c*Verwenden Sie den Dockerfile-Befehl, um das Bild zu erstellen;
- **-m *Der Beschreibungstext beim Absenden ;
- **-p * Den Container beim Festschreiben anhalten.
Verwendungsbeispiel: Erstellen Sie einen Container über ein Bild, bedienen Sie dann die Containerebene und packen Sie dann die betriebene Containerebene und die Bildebene zur Übermittlung in ein neues Bild.
1. Laden Sie zuerst das Tomcat-Image herunter und führen Sie es aus:
docker run -d --name="tomcat01" tomcat
3. Kopieren Sie die Dateien in das Verzeichnis webapps.dist des Tomcat-Containers im Webapps-Verzeichnis:
docker exec -it tomcat01 /bin/bash
5. Docker-Commit Senden Sie das Bild
Speichern Sie den Container dc904437d987 als neues Bild und fügen Sie die Übermittlerinformationen und Beschreibungsinformationen hinzu 1.0:
cp -r webapps.dist/* webapps
Sie können sehen, dass die Größe des neuen Tomcat-Images nach dem Commit etwas größer ist als die des ursprünglichen Tomcat-Images, da wir Dateien in die Containerebene kopiert haben.
Docker-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonDocker-Image-Prinzip: gemeinsames Dateisystem und mehrschichtiges Verständnis (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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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



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

Um die Docker -Version zu erhalten, können Sie die folgenden Schritte ausführen: Führen Sie den Befehl Docker "Docker --version" aus, um die Client- und Serverversionen anzuzeigen. Für Mac oder Windows können Sie auch Versionsinformationen über die Registerkarte Version der Docker -Desktop -GUI oder das Menü Docker Desktop anzeigen.

Sie können zur Quelle der Inlandsspiegel wechseln. Die Schritte sind wie folgt: 1. Bearbeiten Sie die Konfigurationsdatei /etc/docker/daemon.json und fügen Sie die Spiegelquellenadresse hinzu; 2. Starten Sie den Docker Service Sudo SystemCtl Docker neu, um die Download -Geschwindigkeit und -stabilität des Bilddownloads zu verbessern.

Schritte zum Erstellen eines Docker -Images: Schreiben Sie eine Dockerfile, die die Build -Anweisungen enthält. Erstellen Sie das Bild im Terminal mit dem Befehl Docker Build. Markieren Sie das Bild und weisen Sie Namen und Tags mit dem Befehl Docker Tag zu.

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 Docker -private Repositorys erstellen, um Containerbilder sicher zu speichern und zu verwalten und strenge Kontrolle und Sicherheit bereitzustellen. Zu den Schritten gehören: Erstellen eines Repositorys, Gewährung von Zugriff, Bereitstellung eines Repositorys, Drückens eines Bildes und Ziehen eines Bildes. Zu den Vorteilen gehören Sicherheit, Versionskontrolle, reduzierter Netzwerkverkehr und Anpassung.

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

Docker LNMP Container Anrufschritte: Führen Sie den Container aus: Docker Run -d --Name LNMP -Container -P 80:80 -P 443: 443 LNMP -Stack, um den Container IP zu erhalten: Docker Inspecy Lnmp -Container | GREP iPaddress Access Website: http: // & lt; Container IP & gt;/index.phpssh Access: Docker Exec -it lnmp -container Bash Access MySQL: Mysql -U Roo
