Eu gostaria de puxar as imagens do CentOS, Tomcat, ... usando seu código sha256, como em
docker pull myimage@sha256:0ecb2ad60
Mas não consigo encontrar o código sha256 para usar em qualquer lugar.
Verifiquei o repositório DockerHub em busca de qualquer dica do código sha256, mas não consegui encontrar nenhum. Eu baixei as imagens por sua tag
docker pull tomcat:7-jre8
e verificou a imagem com docker inspect
para ver se há um código sha256 nos metadados, mas não há nenhum (adicionar o código sha256 da imagem provavelmente mudaria o código sha256).
Devo calcular o código sha256 de uma imagem sozinho e usá-lo?
docker
docker-registry
cristão
fonte
fonte
Respostas:
Última resposta
Edição sugerida por OhJeez nos comentários.
Resposta original
Eu acredito que você também pode conseguir isso usando
Funciona apenas no Docker 1.9 e se a imagem foi originalmente extraída pelo resumo. Os detalhes estão no rastreador de problemas do docker.
fonte
docker inspect --format='{{index .RepoDigests 0}}' $IMAGE
sem colchetes (retorna o primeiro índice da matriz)Você pode conseguir por
docker images --digests
fonte
docker images --format '{{.Digest}}'
. Isso é útil em umaforeach
instrução para fazer algum trabalho com os resumos.A forma mais simples e concisa é:
docker images --no-trunc --quiet $IMAGE
Isso retorna apenas a
sha256:...
string e nada mais.por exemplo:
Editar:
NOTA: isso só funciona para imagens locais. Você pode
docker pull $IMAGE
primeiro, se necessário.fonte
Acabei de ver:
Quando eu puxo uma imagem, o código sha256 é exibido na parte inferior da saída (Resumo: sha ....):
Este código sha
pode ser usado para puxar a imagem depois com
Dessa forma, você pode ter certeza de que a imagem não será alterada e poderá ser usada com segurança para produção.
fonte
Além das respostas existentes, você pode usar a
--digests
opção ao fazerdocker images
para obter uma lista de resumos de todas as imagens que possui.Você pode adicionar um grep para aprofundar mais
fonte
Este deveria ser o campo Id, que você pode ver na API Docker Hub obsoleta
MAS: não é assim que funciona agora com a nova distribuição docker .
Consulte o problema 628: "Obter ID de imagem com nome de tag"
A resposta atual (meados de 2015) é:
fonte
Descobri que os métodos acima não funcionam em alguns casos. Eles também:
O método abaixo é delicado, mas funciona para extrair o 'nome' completo específico e o hash para um contêiner empurrado específico.
Este é o cenário - uma imagem é carregada separadamente para 2 projetos diferentes no mesmo repo, portanto, consultar RepoDigests retorna 2 resultados.
Quero usar o resultado alfa, mas não posso prever qual índice será. Portanto, preciso manipular a saída do texto para remover os colchetes e obter cada entrada em uma linha separada. A partir daí, posso facilmente pegar o resultado.
fonte
Conforme mencionado por @zelphir, usar resumos não é uma boa maneira, pois não existe para uma imagem somente local. Presumo que a ID da imagem sha é a mais precisa e consistente em tags / puxar / empurrar etc.
Faz o truque.
fonte
Você pode encontrá-lo no momento de puxar a imagem do respectivo repositório. O comando abaixo menciona Digest: sha256 no momento de puxar a imagem do docker.
09:33 AM##~::>docker --version Docker version 19.03.4, build 9013bf5
Resumo: sha256: 6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
Assim que a imagem for baixada, podemos fazer o seguinte
"ubuntu @ sha256: 6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d"
fonte
Basta emitir
docker pull tomcat:7-jre8
novamente e você obterá o que deseja.fonte