Ein Image erstellen, um Build-Cache zu generieren
In diesem Schritt werden wir ein einfaches Docker-Image erstellen, um Build-Cache zu generieren. Der Docker Build-Cache ist ein Mechanismus, der den Build-Prozess beschleunigt, indem Layer aus vorherigen Builds wiederverwendet werden. Wenn Sie ein Docker-Image erstellen, erzeugt jede Anweisung im Dockerfile einen Layer. Wenn sich eine Anweisung seit dem letzten Build nicht geändert hat, kann Docker den vorhandenen Layer wiederverwenden, anstatt ihn neu zu erstellen.
Zuerst erstellen wir ein Verzeichnis für unser Projekt und wechseln hinein.
mkdir ~/project/docker-cache-demo
cd ~/project/docker-cache-demo
Nun erstellen wir ein einfaches Dockerfile. Dieses Dockerfile kopiert eine Datei in das Image und führt dann einen Befehl aus.
nano Dockerfile
Fügen Sie folgenden Inhalt zum Dockerfile
hinzu:
FROM ubuntu:latest
COPY . /app
RUN echo "Hello, Docker Cache!" > /app/message.txt
CMD ["cat", "/app/message.txt"]
Speichern und schließen Sie die Datei.
Als nächstes erstellen wir eine einfache Datei, die wir in das Image kopieren werden.
nano message.txt
Fügen Sie etwas Inhalt zu message.txt
hinzu:
This is a test message.
Speichern und schließen Sie die Datei.
Nun bauen wir das Docker-Image. Wir taggen das Image als cache-demo
.
docker build -t cache-demo .
Sie sehen eine Ausgabe, die zeigt, wie Docker das Image Schritt für Schritt erstellt. Jeder Schritt entspricht einer Anweisung im Dockerfile. Docker lädt das ubuntu:latest
-Image herunter, falls es noch nicht vorhanden ist, kopiert die message.txt
-Datei und führt dann den echo
-Befehl aus.
Nach Abschluss des Builds können Sie überprüfen, ob das Image erstellt wurde, indem Sie die verfügbaren Images auflisten.
docker images
Sie sollten cache-demo
in der Liste der Images sehen.
Nun bauen wir das Image erneut, ohne Änderungen am Dockerfile oder message.txt
vorzunehmen.
docker build -t cache-demo .
Diesmal werden Sie feststellen, dass der Build-Prozess viel schneller ist. Docker verwendet die vorhandenen Layer aus dem vorherigen Build wieder, da sich die Anweisungen im Dockerfile und der Inhalt von message.txt
nicht geändert haben. Die Ausgabe zeigt für die meisten Schritte "Using cache". Dies veranschaulicht, wie der Docker Build-Cache nachfolgende Builds beschleunigt.