‫Was machen wir mit dieser Datei?
‫Lass uns raus gehen. Wir werden in diesem Verzeichnis sehen, dass wir nur diese eine Datei haben.
‫Es ist kaum ein K groß.
‫Es enthält offensichtlich nichts anderes als den Text, aber es sind die Anweisungen zum Erstellen
‫unseres Images.
‫Der from-Befehl, wenn ich dieses Image erstelle, wird dieses Debian-Jessie-Image von Docker Hub in
‫meinen lokalen Cache ziehen. Und dann wird jede dieser
‫Zeilengruppen in meiner Docker-Engine zeilenweise ausgeführt und jede dieser
‫Ebenen zwischengespeichert.
‫Geben Sie docker image build ein und wir markieren es.
‫Denken Sie daran, das ist der Name, den wir ein Bild geben werden.
‫Da ich dieses Image nur lokal verwende, muss ich nicht meinen Docker Hub-Kontonamen verwenden. Ich kann es nennen, wie
‫ich will.
‫Ich werde es als benutzerdefiniertes Nginx bezeichnen und hier einen Punkt einfügen, der im Grunde sagt, dass die Docker-Datei
‫in diesem Verzeichnis erstellt wird. Sie werden feststellen, dass jeder
‫Schritt eine Zeile in der Andockdatei ist, die in diesem Bild ausgeführt wird, während es erstellt wird.
‫Und dann gibt es am Ende ein kleines Hash, das eigentlich das Hash ist, das
‫im Build-Cache gespeichert ist, damit es beim nächsten Erstellen dieses Dings nicht erneut ausgeführt wird, wenn sich
‫diese Zeile in der Docker-Datei nicht geändert hat.
‫Dies ist einer der magischen Gründe, warum Docker die Bereitstellung und das Erstellen von Software so schnell macht, dass sie
‫tatsächlich intelligent genug sind, um die Schritte im Build zwischenzuspeichern.
‫Nachdem Sie das erste Mal ein Image erstellt haben und Ihren benutzerdefinierten Quellcode geändert
‫haben und die Anwendung nicht unbedingt selbst geändert haben, ist
‫das alles schon passiert.
‫Sie werden also sehr kurze Bauzeiten haben.
‫Okay, jetzt sind wir fertig mit dem Bauen. Das hat ungefähr eine Minute gedauert.
‫Aber was ist, wenn ich in diese Datei zurück gehe? Ich werde einen zusätzlichen exponierten Port hinzufügen.
‫Zum Beispiel mache ich gerade 8080.
‫Das bedeutet nicht, dass Nginx klug genug ist, um zu wissen, dass ich diesen Port öffne
‫oder in irgendeiner Weise mit Nginx kommuniziere.
‫Ich erlaube dem Container nur, Pakete an diesem Port zu empfangen.
‫Lassen Sie uns zur Sicherheit ein Docker-Image erstellen. Wir werden ganz oben sehen, dass es automatisch als aktuell
‫markiert wurde, oder?
‫Weil wir es nur den Repository-Namen nannten.
‫Wir haben ihm beim Markieren keinen Doppelpunkt-Tag-Namen gegeben.
‫Also lass es uns wieder bauen.
‫Wow, das war schnell, oder?
‫Das hat uns nur ein paar Sekunden gekostet. Und Sie werden feststellen, dass bei jedem Schritt die Verwendung des Caches angezeigt wird. Beginnend mit Schritt 2 heißt es,
‫Cache
‫verwenden, Cache auf 3 verwenden, Cache auf 4 verwenden. Bei 5 wird bei Schritt 5 erkannt, dass diese
‫Zeile unterschiedlich ist.
‫Also führt es das tatsächlich in den Container aus. In Schritt 6 muss diese Zeile erneut ausgeführt werden, da
‫in dem Moment, in dem sich eine Zeile ändert, auch jede nachfolgende Zeile neu erstellt werden muss.
‫Dies bringt den Punkt über die Reihenfolge Ihrer Zeilen in Ihrem Dockerfile. Denn wenn Sie Probleme haben, zum Beispiel,
‫wenn Sie
‫den Code in ... Nehmen wir an, Sie erstellen eine Website. Wenn Sie den Software-Code,
‫den Sie am Anfang der Datei erstellen, kopieren, muss jedes Mal, wenn Sie eine Quelldatei
‫ändern und neu erstellen, die gesamte Docker-Datei neu erstellt werden.
‫Aus diesem Grund ist es für Ihre Vernunft und Ihre Zeit von entscheidender Bedeutung, dass Sie normalerweise die Dinge oben in Ihrer
‫Docker-Datei belassen, die sich am wenigsten ändern, und dann die Dinge, die sich unten in Ihrer Docker-Datei am meisten
‫ändern.