Suponha que eu tenha uma imagem que eu queira marcar como 0.10.24
(no meu caso, é uma imagem que contém o Node.js. 0.10.24). Criei essa imagem usando um Dockerfile e executando docker build
e fornecendo uma tag usando o -t
parâmetro
Espero que um dia eu tenha versões adicionais dessa imagem, portanto, executarei o processo novamente, apenas com outro nome de tag.
Por enquanto, tudo bem. Isso funciona muito bem e tudo está bem.
Mas, e é aí que os problemas começam, eu também quero sempre ter o anúncio mais recente com tags de imagem latest
. Acho que preciso dar dois nomes para a mesma imagem.
Como eu faço isso? Eu realmente preciso executar docker build
novamente a mesma versão exata novamente, mas desta vez usando outra tag, existe uma opção melhor?
Respostas:
Você pode ter várias tags ao criar a imagem:
Referência: https://docs.docker.com/engine/reference/commandline/build/#tag-image-t
fonte
:latest
parte, pois esse é o padrão:docker build -t whenry/fedora-jboss -t whenry/fedora-jboss:v2.1 .
Depois de ter sua imagem, você pode usar
Crie e marque a imagem com creack / node: latest
Adicione uma nova tag
Você pode usar isso e pular a parte -t da compilação
fonte
creack/node:latest
e você pode marcá-la comdocker tag creack/node:latest creack/node:0.10.24
REV=$(hg identify --num)
docker tag -f $ID creack/node:latest
, a fim de forçar a marcação com o mais recente (no caso de uma imagem anterior já estava mais recente)Aqui está o meu script bash
Você pode remover imagens não marcadas se recriar a mesma versão com
ligação
ou
ou
Comandos de limpeza :
O Docker 1.13 apresenta comandos de limpeza. Para remover todos os contêineres, imagens, redes e volumes não utilizados:
ou individualmente:
fonte
awk '{print $3}'
funciona, mas nãoawk "{print $3}"
por isso o uso de comando I édocker rmi $(docker images -a | grep "^<none>" | awk '{print $3}')
-f
opção não existe mais emdocker tag
. O uso é justodocker tag IMAGE[:TAG] IMAGE[:TAG]
docker push
depoisdocker build & docker run
, você pressiona com:latest
ou${VERSION}
?ID=$(docker build -t creack/node .)
não funciona para mim, poisID
conterá a saída da compilação.Então, eu estou usando este pequeno script BASH:
fonte
-q
/--quiet
abuild
, como mencionado no essa respostaApenas grep o ID de
docker images
:Não precisa de arquivo temporário e fornece saída de compilação completa . Você ainda pode redirecioná-lo para
/dev/null
ou para um arquivo de log.fonte
Variação da resposta de Aaron. Usando sed sem arquivos temporários
fonte