Załóżmy, że mam obraz, który chcę oznaczyć jako 0.10.24
(w moim przypadku jest to obraz zawierający Node.js 0.10.24). Zbudowałem ten obraz przy użyciu pliku Docker i wykonując docker build
go, podając tag przy użyciu -t
parametru.
Oczekuję, że pewnego dnia będę mieć dodatkowe wersje tego obrazu, więc ponownie uruchomię proces, z inną nazwą tagu.
Na razie w porządku. Działa to świetnie i wszystko jest w porządku.
Ale i tu zaczynają się problemy, chcę też zawsze mieć latest
dodatkowo reklamę z najnowszym obrazem . Myślę, że muszę nadać dwa nazwy temu samemu obrazowi.
Jak mam to zrobic? Czy naprawdę muszę ponownie uruchomić docker build
dokładnie tę samą wersję, ale tym razem użyj innego tagu, czy jest lepsza opcja?
Odpowiedzi:
Podczas tworzenia obrazu możesz mieć wiele tagów:
Odniesienie: https://docs.docker.com/engine/reference/commandline/build/#tag-image-t
źródło
:latest
porcję, ponieważ jest to ustawienie domyślne:docker build -t whenry/fedora-jboss -t whenry/fedora-jboss:v2.1 .
Gdy masz już obraz, możesz go użyć
Zbuduj i oznacz obraz za pomocą creack / node: latest
Dodaj nowy tag
Możesz tego użyć i pominąć część -t z kompilacji
źródło
creack/node:latest
, a następnie możesz go otagowaćdocker tag creack/node:latest creack/node:0.10.24
REV=$(hg identify --num)
docker tag -f $ID creack/node:latest
, aby wymusić tagowanie najnowszym (w przypadku, gdy poprzedni obraz był już najnowszy)Oto mój skrypt bash
Następnie możesz usunąć nieoznaczone obrazy, jeśli przebudowałeś tę samą wersję
połączyć
lub
lub
Polecenia czyszczenia :
Docker 1.13 wprowadza polecenia czyszczenia. Aby usunąć wszystkie nieużywane pojemniki, obrazy, sieci i woluminy:
lub indywidualnie:
źródło
awk '{print $3}'
działa, ale nieawk "{print $3}"
tak, że polecenie, którego używam todocker rmi $(docker images -a | grep "^<none>" | awk '{print $3}')
-f
opcja nie istniejedocker tag
. Użycie jest po prostudocker tag IMAGE[:TAG] IMAGE[:TAG]
docker push
późniejdocker build & docker run
, czy naciskasz za pomocą:latest
czy${VERSION}
?ID=$(docker build -t creack/node .)
nie działa dla mnie, ponieważID
będzie zawierać dane wyjściowe z kompilacji.Więc używam tego małego skryptu BASH:
źródło
-q
/--quiet
do,build
jak wspomniano w tej odpowiedziPo prostu grep identyfikator z
docker images
:Nie wymaga pliku tymczasowego i daje pełne wyjście kompilacji . Nadal możesz przekierować go do
/dev/null
pliku dziennika.źródło
Wariacja odpowiedzi Aarona. Używanie sed bez plików tymczasowych
źródło