Wenn Sie ein Docker-Image erstellen, verwenden Sie normalerweise docker build .
.
Aber ich habe festgestellt, dass Sie angeben können --pull
, so dass der gesamte Befehl aussehen würdedocker build --pull .
Ich bin mir nicht sicher über den Zweck von --pull
. In der offiziellen Dokumentation von Dockers heißt es: "Versuchen Sie immer, eine neuere Version des Bildes abzurufen", und ich bin mir nicht sicher, was dies in diesem Zusammenhang bedeutet.
Sie verwenden docker build
, um ein neues Image zu erstellen und es schließlich irgendwo in einer Containerregistrierung zu veröffentlichen. Warum sollten Sie etwas ziehen wollen, das es noch nicht gibt?
Ich würde erwarten, dass so etwas "Einfaches" im Web leicht zu finden ist, aber niemand scheint eine ähnliche Frage zu haben wie diese. Der einzige wirkliche Treffer bei Google bezieht sich auf die offiziellen Dokumente von Dockers, die ich (wie oben angegeben) nicht verstehe.
Danke für Ihre Hilfe!
ubuntu:bionic
Bild, da es (offensichtlich) keine angehängte Version hat, aber immer noch anders ist, wenn ein neues Bild veröffentlicht wird. Alles macht Sinn. Vielen Dank!ubuntu:0.1.0
zum Beispiel wäre und sie ein neues Image mit derselben Version veröffentlicht hätten, dhubuntu:0.1.0
- bedeutet dies,docker build --pull
dass das gesamte neue Image erneut heruntergeladen wird? (was die meisten Leute bevorzugen würden, denke ich)Einfache Antwort.
docker build
wird verwendet, um aus einer lokalen Docker-Datei zu erstellen.docker pull
wird verwendet, um vom Docker-Hub zu ziehen. Wenn Sie Docker Build ohne Docker-Datei verwenden, wird ein Fehler ausgegeben.Wenn Sie angeben
--pull
oder:latest
Docker versucht, die neueste Version herunterzuladen (falls vorhanden)Wenn Sie --pull hinzufügen, wird grundsätzlich versucht, bei jeder Ausführung die neueste Version abzurufen.
quelle
Docker ermöglicht die Weitergabe der
--pull
Flagge andocker build
zdocker build . --pull -t myimage
. Dies ist die empfohlene Methode, um sicherzustellen, dass der Build trotz der lokal verfügbaren Version immer das neueste Container-Image verwendet. Ein weiterer erwähnenswerter Punkt:Verwenden Sie beim Erstellen die folgenden Optionen, um sicherzustellen, dass Ihr Build vollständig neu erstellt wird, einschließlich der Überprüfung des Basisimages auf Aktualisierungen:
--no-cache
- Dadurch wird die Wiederherstellung bereits verfügbarer Ebenen erzwungen.Der vollständige Befehl sieht daher folgendermaßen aus:
docker build . --pull --no-cache --tag myimage:version
Die gleichen Optionen stehen zur Verfügung für
docker-compose
:docker-compose build --no-cache --pull
quelle
--no-cache
. Wenn das Basis-Image aktualisiert wird (und--pull
eine neue Version erhält), wird der Cache automatisch ungültig. Ähnliches gilt, wenn Sie einenCOPY
anderen Code verwenden, der den Cache ungültig macht. Dies wirkt sich normalerweise nur aus, wenn Sie so etwas wieapt-get install
ein im Netzwerk gehostetes Paket ausführen. In diesem Fall--no-cache
wird nach einer neueren Version gesucht, auch wenn das Basis-Image nicht aktualisiert wurde.