Erfahren Sie mehr über das Docker-Image und das FROM der Docker-Datei

2020-10-26_215138.png

Erfahren Sie mehr über das Docker-Image und das FROM der Docker-Datei

Ich hatte Dockers Dockerfile leicht durchgelesen, aber ich hielt es für notwendig, die folgenden Fragen erneut zu stellen, um sie richtig zu verstehen. Wer ist das Docker-Image, was ist die Docker-Datei und was ist das in dieser Docker-Datei beschriebene FROM?

Was ist eine Docker-Datei?

Best Practices für Dockerfile Docker-docs-ja 19.03 Dokumentation

Dockerfile ist eine Textdatei, die alle Anweisungen beschreibt, die zum Erstellen eines Images in der richtigen Reihenfolge erforderlich sind. Für diejenigen, die es wissen, ist die Docker-Version von Makefile möglicherweise eine gute Idee. Das Verfahren zum Erstellen eines Docker-Images wird in der Reihenfolge nach einem bestimmten Format und einer bestimmten Anweisungsgruppe beschrieben. Kurz gesagt, es handelt sich um eine Textdatei, die den Aufbau einer Umgebung enthält, die als Docker-Image bezeichnet wird.

Was ist eine Schicht?

Das Docker-Image besteht aus schreibgeschützten Ebenen, die den Anweisungen in der Docker-Datei

entsprechen. Jede Ebene ist eine Änderung gegenüber der vorherigen Ebene, und diese Ebenen sind gestapelt. </ blockquote> Was ist die Schicht, die plötzlich erschien?

FROM ubuntu:18.04 COPY . /app RUN make /app CMD python /app/app.py
Es heißt, für jede dieser Anweisungen eine Ebene zu erstellen. Wenn Sie das
-Bild ausführen und einen Container generieren, wird über der ursprünglichen Ebene eine neue beschreibbare Ebene (dies ist die "Containerebene") hinzugefügt. Alle Änderungen an einem laufenden Container, wie das Schreiben neuer Dateien, das Bearbeiten vorhandener Dateien, das Löschen von Dateien usw., werden in dieser beschreibbaren Containerebene beschrieben. Fügen Sie im obigen Beispiel der Ebene "ubuntu: 18.04" mit "COPY. / App" und "RUN make / app" eine neue Ebene hinzu und verwenden Sie dann "CMD python /app/app.py" mit python / app / app. Dies bedeutet, dass py ein ausgeführtes Bild erstellt. Es ist leicht zu verstehen, dass die Ebene "ubuntu: 18.04" mit anderen Ebenen überlagert ist.

Was ist gebaut

Kurz gesagt, es ist ein Befehl, der ein Docker-Image gemäß der angegebenen Docker-Datei erstellt. Für diejenigen, die dies ebenfalls wissen, ist die Docker-Version des Befehls make möglicherweise genau richtig.

mkdir myproject && cd myproject echo "hello" > hello echo -e "FROM busybox\nCOPY /hello /\nRUN cat /hello" > Dockerfile docker build -t helloapp:v1 .
Verwenden Sie im obigen Beispiel BusyBox , um eine "Hallo-Datei" mit cat zu erstellen. Die Docker-Datei, die das anzuzeigende Bild erstellt, wird ausgespuckt, und das Docker-Bild wird gemäß der Docker-Datei erstellt.

Was ist FROM in Dockerfile?

Was ist das FROM einer Docker-Datei?

FROM ubuntu:18.04 COPY . /app RUN make /app CMD python /app/app.py
In diesem Beispiel wurde FROM als "Erstellen einer Ebene aus einem Docker-Image bei Ubuntu: 18.04" beschrieben.
mkdir myproject && cd myproject echo "hello" > hello echo -e "FROM busybox\nCOPY /hello /\nRUN cat /hello" > Dockerfile docker build -t helloapp:v1 .
In diesem Beispiel wird für FROM Busybox angegeben. Natürlich hat Busybox auch ein Docker-Image , und wenn Sie einfach FROM Busybox angeben, ist es das neueste. Bild ist angegeben.

Für FROM Ubuntu: 18.04

Was ist mit FROM Ubuntu: 18.04? Wenn FROM Busybox und ":" nicht angegeben sind, ist dies die neueste (neueste). Was passiert jedoch, wenn ":" hinzugefügt wird? Sehen wir uns Erläuterung von FROM an.

FROM <image> [AS <name>] Oder FROM <image>[:<tag>] [AS <name>] Oder FROM <image>[@<digest>] [AS <name>] Sie können der neuen Erstellungsphase optional einen Namen geben. Dies erfolgt über den AS-Namen der FROM-Anweisung. Dieser Name kann in den nachfolgenden Anweisungen FROM und COPY --from = verwendet werden, um auf das Image zu verweisen, das während dieser Erstellungsphase erstellt wurde. Die Tag- und Digest-Einstellungen sind optional. Wenn dies weggelassen wird, wird das neueste Tag, das die Standardeinstellung ist, wie angegeben behandelt. Wenn keine mit dem Wert von tag übereinstimmt, wird ein Fehler zurückgegeben. Wenn Sie also FROM ubuntu: 18.04 angeben, wird das Bild des 18.04-Tags von Ubuntu angegeben. Insbesondere Ubuntus Docker-Bilder 18.04 Kann gesehen werden.
FROM scratch ADD ubuntu-bionic-core-cloudimg-amd64-root.tar.gz / Unterlassung RUN mkdir -p /run/systemd && echo 'docker' > /run/systemd/container CMD ["/bin/bash"]
Beachten Sie, dass es mit FROM Scratch beginnt, da es kein Basis-Docker-Image gibt.

Offizielle Empfehlung von

Best Practices für Dockerfile Docker-docs-ja 19.03 Dokumentation Empfehlungen finden Sie in FROM description ..

Verwenden Sie nach Möglichkeit das neueste offizielle Bild als Grundlage für Ihr Bild. Unsere Empfehlung ist das Alpenbild. Dies ist eine sehr kontrollierte Linux-Distribution mit geringer Kapazität (derzeit weniger als 5 MB).

Was ist ein Alpenbild?

Ein minimales Docker-Image basierend auf Alpine Linux mit einem vollständigen Paketindex und einer Größe von nur 5 MB! Das Alpenbild wird als angepriesen. "Wir haben Zugriff auf ein viel vollständigeres Paket-Repository als jedes andere BusyBox-basierte Image, was Alpine Linux zu einem großartigen Image-basierten Image für Dienstprogramme und Produktionsanwendungen macht." neulich in der Webserver-Software als Beispiel für die tatsächliche Übernahme des Alpenbildes Hier ist ein Caddy . Anzeigen der Caddy-Docker-Datei von neuesten Es beginnt mit "FROM alpine: 3.12." alpine hat derzeit "3.12.1, 3.12, 3" als neueste Version.

Zusammenfassend

Wer ist das Docker-Image, was ist die Docker-Datei und was ist das in dieser Docker-Datei beschriebene FROM? Ein Docker-Image ist ein Image für einen Docker-Container, der vom Befehl build gemäß der angegebenen Docker-Datei erstellt wurde. Eine Docker-Datei ist eine Textdatei, die alle Anweisungen beschreibt, die zum Erstellen eines Docker-Images in der richtigen Reihenfolge erforderlich sind. FROM ist die Basis für das Schreiben in die Docker-Datei. Geben Sie normalerweise das Docker-Image an. Wenn nicht, schreiben Sie von Grund auf neu. Die offizielle Empfehlung lautet FROM Alpine.

Recommended Posts