Basisbild Das Basisbild hat zwei Bedeutungen:
Daher sind Basis-Images im Allgemeinen Docker-Images verschiedener Linux-Distributionen wie etwa Ubuntu, Debian oder CentOS. Das Basis-Image stellt die Linux-Distribution mit der Mindestinstallation bereit. Die meisten unserer Bilder werden auf Grundlage des Basisbildes erstellt. Daher wird normalerweise das offiziell veröffentlichte Basisimage verwendet. Es ist im Docker Hub zu finden. Beispielsweise centos: https://hub.docker.com/_/centos Wir können selbst ein Docker-Basisimage erstellen oder direkt ein vorhandenes Basisimage verwenden. Zum Beispiel Centos. Wir können es direkt vom Docker-Hub abrufen. Docker-Pull Centos Überprüfen Docker-Bilder Centos REPOSITORY TAG BILD ID ERSTELLT GRÖSSE centos latest 1e1148e4cc2c vor 2 Monaten 202MB Sie können sehen, dass das neueste CentOS-Image nur 200 MB groß ist. Denken Sie, dass es zu klein ist? Dies liegt daran, dass das Docker-Image bei der Ausführung direkt den Kernel der Docker-Hostmaschine verwendet. Das Linux-Betriebssystem besteht aus Benutzerbereich und Kernelbereich. Der Kernelbereich ist Kernel und der Benutzerbereich ist RootFS. Der Unterschied zwischen verschiedenen Distributionen besteht hauptsächlich in RootFS. Beispielsweise verwendet Ubuntu 14.04 Upstart zum Verwalten von Diensten und Apt zum Verwalten von Softwarepaketen, während CentOS 7 systemd und yum verwendet. Dies sind Unterschiede im Benutzerbereich, der Kernel unterscheidet sich nicht wesentlich. Daher kann Docker mehrere Linux-Images gleichzeitig unterstützen und verschiedene Betriebssystemumgebungen simulieren. Das Basisimage verfügt nur über denselben Benutzerbereich und dieselbe Release-Version, und der Kernelbereich verwendet den Kernel der Docker-Hostmaschine. Speicherstruktur Oben wird gezeigt, wie ein Basisimage heruntergeladen wird. Normalerweise erstellen wir unser eigenes Image auf Grundlage dieses Basisimages. Fügen Sie beispielsweise einen Nginx-Lastausgleich in CentOS hinzu. Zunächst müssen Sie die Struktur des Bildes verstehen. Offizielle Dokumentation: https://docs.docker.com/storage/storagedriver/ Docker-Image-Ebenenstruktur Wenn Sie ein Image starten, wird eine neue beschreibbare Ebene über das Image geladen. Diese Ebene wird üblicherweise als „Containerebene“ bezeichnet, darunter befindet sich die „Bildebene“. Auf der Containerebene kann gelesen und geschrieben werden, und alle Dateiänderungen und -schreibvorgänge im Container erfolgen auf dieser Ebene. Die Bildebene erlaubt nur das Lesen, schreibgeschützt. Kopieren beim Schreiben Docker verwendet eine Kopierstrategie zum Zeitpunkt der Änderung, um die Sicherheit des Basis-Image sowie eine höhere Leistung und Speichernutzung zu gewährleisten.
Beginnen Sie mit der obersten Bildebene und suchen Sie nach unten. Nachdem Sie es gefunden haben, lesen Sie es in den Speicher ein. Wenn es bereits im Speicher ist, können Sie es direkt verwenden. Mit anderen Worten: Docker-Container, die auf derselben Maschine ausgeführt werden, teilen sich zur Laufzeit dieselben Dateien.
Suchen Sie von oben nach unten und kopieren Sie es nach dem Finden in die Containerebene. Beim Container können Sie die Datei in der Containerebene sehen, aber nicht die Datei in der Bildebene. Anschließend können Sie die Datei in der Containerebene direkt ändern.
Suchen Sie von oben nach unten und zeichnen Sie die Löschung im Container auf, nachdem Sie sie gefunden haben. Dies ist keine echte Löschung, sondern eine sanfte Löschung. Dies führt dazu, dass die Bildgröße nur zunimmt, nicht abnimmt. Wenn der Container Dateien hinzufügen muss, werden diese direkt zur beschreibbaren Containerebene der obersten Ebene hinzugefügt, ohne die Imageebene zu beeinträchtigen. Straffung und Optimierung von Bildern Optimieren des Basis-Images Wählen Sie beim Auswählen eines Basisimages ein geeignetes kleineres Image. Häufig verwendete Linux-Systemimages sind Ubuntu, CentOs, Alpine usw. Anweisungen zum Verketten von Dockerfiles In einer Docker-Datei erstellt jede Anweisung eine Bildebene, die die Größe des Bildes erhöht. Änderungen an der aktuellen Ebene wirken sich nicht auf die vorherige Ebene aus.
Konkrete Beispiele sind: Benutzerdefiniertes Dockerfile: VON Ubuntu:14.04 #Grundlegendes Quellbild MAINTAINER xiongkun #Beschreiben Sie den Ersteller des Bildes, Name und E-Mail WORKDIR /home RUN dd if=/dev/zero of=50M.file bs=1M count=50 #Erstellen Sie eine Testdatei mit der Größe 50 MB RUN rm -rf 50M.file #Löschen Sie die Datei Optimiertes Dockerfile: VON Ubuntu:14.04 #Grundlegendes Quellbild MAINTAINER xiongkun #Beschreiben Sie den Ersteller des Bildes, Name und E-Mail WORKDIR /home RUN dd if=/dev/zero of=50M.file bs=1M count=50 && rm -rf 50M.file #Erstellen Sie eine Datei und löschen Sie sie auf derselben Ebene Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Detaillierte Beispiele für Variablen- und Funktionspromotion in JavaScript
>>: Lernen Sie die Ausführungsreihenfolge von SQL-Abfragen von Grund auf
1: Unterschiede bei Geschwindigkeit und Lademethod...
CSS3Bitte Schauen Sie sich diese Website selbst a...
veranschaulichen: Als ich heute das letzte Experi...
Allgemeine nmcli-Befehle basierend auf RHEL8/Cent...
Bei der Verwendung von Vue zum Entwickeln von Pro...
Die Datei shutdown.bat enthält einen Satz wenn ni...
Leerzeichenregeln in HTML In HTML werden mehrere ...
1.MySQL-Replikationskonzept Dies bedeutet, dass d...
Hier ist ein allgemeines Ein-Klick-Leistungstests...
Wenn ich im Internet surfe, sehe ich oft Websites...
1. Auf welche Probleme sind wir gestoßen? In Stan...
Inhaltsverzeichnis 1. Einstellungen für die Spezi...
1. Prozentuale Basis für Elementbreite/-höhe/-pol...
Grundlegende Umgebung Pagoden-Montageservice [Pyt...
Bei der Verwendung von HTML-Tabellen müssen wir m...