Podczas tworzenia obrazu dokera zwykle używasz docker build .
.
Ale odkryłem, że możesz określić --pull
, aby wyglądało całe poleceniedocker build --pull .
Nie jestem pewien celu --pull
. Oficjalna dokumentacja Dockers mówi „Zawsze próbuj pobrać nową wersję obrazu” i nie jestem pewien, co to oznacza w tym kontekście.
Używasz go docker build
do zbudowania nowego obrazu i ostatecznie opublikowania go gdzieś w rejestrze kontenera. Dlaczego chcesz wyciągnąć coś, co jeszcze nie istnieje?
Spodziewałbym się, że coś tak „prostego” można łatwo znaleźć w Internecie, ale nikt nie wydaje się mieć podobnych pytań jak to. Jedyny prawdziwy hit w Google odnosi się do oficjalnych dokumentów Dockers, których ja (jak wspomniano powyżej) nie rozumiem.
Dzięki za pomoc!
ubuntu:bionic
obrazu, ponieważ (oczywiście) nie ma dołączonej wersji, ale nadal będzie różny, gdy opublikują nowy obraz. Wszystko ma sens. Dzięki!ubuntu:0.1.0
na przykład obraz podstawowy byłby opublikowany i opublikował nowy obraz, ale w tej samej wersji, tj.ubuntu:0.1.0
- czy to oznacza,docker build --pull
że ponownie pobierze cały nowy obraz? (jak sądzę większość ludzi woli)Prosta odpowiedź.
docker build
służy do kompilacji z lokalnego pliku docker.docker pull
służy do ściągania z piasty dokera. Jeśli używasz kompilacji dokera bez pliku dokowania, generuje to błąd.Po określeniu
--pull
lub:latest
doker spróbuje pobrać najnowszą wersję (jeśli istnieje)Zasadniczo, jeśli dodasz --pull, będzie próbował pobrać najnowszą wersję przy każdym uruchomieniu.
źródło
Docker pozwala przekazać
--pull
flagędocker build
npdocker build . --pull -t myimage
. Jest to zalecany sposób zapewnienia, że kompilacja zawsze używa najnowszego obrazu kontenera, pomimo wersji dostępnej lokalnie. Warto jednak wspomnieć o jednym dodatkowym punkcie:Aby upewnić się, że kompilacja została całkowicie przebudowana, w tym sprawdzenie obrazu podstawowego w poszukiwaniu aktualizacji, podczas budowania użyj następujących opcji:
--no-cache
- Wymusi to przebudowę już dostępnych warstw.Pełne polecenie będzie zatem wyglądać następująco:
docker build . --pull --no-cache --tag myimage:version
Te same opcje są dostępne dla
docker-compose
:docker-compose build --no-cache --pull
źródło
--no-cache
. Jeśli obraz podstawowy zostanie zaktualizowany (i--pull
otrzyma nową wersję), to automatycznie unieważnia pamięć podręczną; podobnie jeśli użyjeszCOPY
innego kodu, który unieważni pamięć podręczną. Jedyne, co zwykle będzie miało to wpływ, to jeśli robisz cośapt-get install
z pakietu hostowanego w sieci, w którym to przypadku--no-cache
sprawi, że sprawdzi, czy jest nowsza wersja, nawet jeśli obraz podstawowy nie został zaktualizowany.