Gostaria de descobrir se uma imagem Docker com uma tag específica existe localmente. Estou bem usando um script bash se o cliente Docker não puder fazer isso nativamente.
Apenas para fornecer algumas dicas para um possível script bash, o resultado da execução do docker images
comando retorna o seguinte:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
rabbitmq latest e8e654c05c91 5 weeks ago 143.5 MB
busybox latest 8c2e06607696 6 weeks ago 2.433 MB
rabbitmq 3.4.4 a4fbaad9f996 11 weeks ago 131.5 MB
Experimente
docker inspect
, por exemplo:Mas agora com uma imagem que existe, você obterá um monte de informações, por exemplo:
E está em um bom formato json.
fonte
images
eps
sempre saem com 0, cominspect
é tão simples como:docker inspect "${image_id}:${image_tag}" > /dev/null 2>&1 || echo "does not exist!"
docker inspect
é ótimo por causa do código de retorno diferente de zero quando nenhuma imagem existe.docker images -q
.tldr:
A título de demonstração ...
sucesso, imagem encontrada:
falha, imagem ausente:
Referência:
https://docs.docker.com/engine/reference/commandline/image_inspect/
fonte
Você pode usar como o seguinte:
Ou:
fonte
Com a ajuda da resposta de Vonc acima, criei o seguinte script bash chamado
check.sh
:Usá-lo para uma imagem e tag existentes imprimirá
exists
, por exemplo:Usá-lo para uma imagem não existente e a tag imprimirá
doesn't exist
, por exemplo:fonte
Usando
test
ou em uma linha
fonte
Caso você esteja tentando pesquisar uma imagem do docker a partir de um registro do docker, acho que a maneira mais fácil de verificar se uma imagem do docker está presente é usando o serviço de lista de tags da API REST do Docker V2
Exemplo:-
se o resultado acima retornar 200Ok com uma lista de tags de imagem, então sabemos que a imagem existe
mais se você ver algo como
então você tem certeza de que essa imagem não existe.
fonte
No script bash, faço isso para verificar se a imagem existe por tag:
O script de exemplo acima verifica se a imagem mysql com a tag 5.6 existe. Se você quiser apenas verificar se existe alguma imagem mysql sem uma versão específica, basta passar o nome do repositório sem tag como este:
fonte
Um pouco de mim para leitores muito bons:
Construir
Ver
Corre
fonte
para nome de tag específico
para "cláusula like" tagname: my_image_tag -> start my_ima *
se você quiser algo "a imagem", por exemplo, deletar todas as imagens com a tag iniciada "my_ima", tente isto
fonte