Para fins de pesquisa, estou tentando rastrear o registro público do Docker ( https://registry.hub.docker.com/ ) e descobrir 1) quantas camadas uma imagem média tem e 2) os tamanhos dessas camadas para obter um ideia da distribuição.
No entanto, estudei a API e as bibliotecas públicas, bem como os detalhes no github, mas não consigo encontrar nenhum método para:
- recuperar todos os repositórios / imagens públicos (mesmo que sejam milhares, ainda preciso de uma lista inicial para iterar)
- encontre todas as camadas de uma imagem
- encontre o tamanho de uma camada (portanto, não de uma imagem, mas de uma camada individual).
Alguém pode me ajudar a encontrar uma maneira de recuperar essas informações?
Obrigado!
EDITAR: alguém é capaz de verificar se a pesquisa de '*' no registro do Docker está retornando todos os repositórios e não apenas qualquer coisa que mencione '*' em qualquer lugar? https://registry.hub.docker.com/search?q=*
image
docker
web-crawler
user134589
fonte
fonte
docker history myimage
e verá o tamanho de cada camada. De forma mais geral, em uma imagem, você pode fazerdocker history myimage | awk 'NR>1 {print $1}' | xargs docker inspect --format '{{ ((index .ContainerConfig.Cmd ) 0) }}'
para ver quais comandos foram emitidos para criar a imagemhttps://registry.hub.docker.com/search?q=*
mostra para mim 87031 repositórios,Respostas:
Você pode encontrar as camadas das imagens na pasta / var / lib / docker / aufs / layers; forneça se você configurou para driver de armazenamento como aufs (opção padrão)
Exemplo:
Agora para visualizar as camadas dos containers que foram criadas com a imagem "Ubuntu"; vá para o diretório / var / lib / docker / aufs / layers e cat o arquivo começa com o ID do contêiner (aqui é 0ca502fa6aae *)
Isso mostrará o resultado do mesmo executando
Para visualizar o ID completo da camada; executado com a opção --no-trunc como parte do comando de histórico.
fonte
docker history
comando não fornecerá as camadas de imagem conforme mostrado na pasta / var / lib / docker / aufs / layers. Leia a atualização aqui .docker history
O comando não informa mais as informações reais de armazenamento em disco da camada no host docker. Verifique este blogVocê pode primeiro encontrar o ID da imagem usando:
Em seguida, encontre as camadas da imagem e seus tamanhos:
Observação: estou usando o Docker versão 1.13.1
fonte
Confira mergulho escrito em golang.
Ferramenta incrível!
fonte
Na minha opinião,
docker history <image>
é suficiente. Isso retorna o tamanho de cada camada:fonte
Eles têm uma resposta muito boa aqui: https://stackoverflow.com/a/32455275/165865
Basta executar as imagens abaixo:
fonte
Isso inspecionará a imagem do docker e imprimirá as camadas:
fonte
mais uma ferramenta: https://github.com/CenturyLinkLabs/dockerfile-from-image
GUI usando ImageLayers.io
fonte
https://hub.docker.com/search?q=* mostra todas as imagens em todo o hub Docker, não é possível obter isso por meio do comando de pesquisa, pois ele não aceita curingas.
A partir da v1.10, você pode encontrar todas as camadas de uma imagem puxando-a e usando estes comandos:
3) O tamanho pode ser encontrado em,
/var/lib/docker/image/aufs/layerdb/sha256/{LAYERID}/size
embora LAYERID! = Os diff_ids encontrados com o comando anterior. Para isso, você precisa olhar/var/lib/docker/image/aufs/layerdb/sha256/{LAYERID}/diff
e comparar com a saída do comando anterior para corresponder adequadamente ao diff_id e ao tamanho corretos.fonte
De fato, é possível consultar as informações de manifesto ou blob do servidor de registro do docker sem puxar a imagem para o disco local.
Você pode consultar a API Registry v2 para buscar o manifesto da imagem.
Observe, você deve lidar com diferentes versões do manifesto. Para v2, você pode obter diretamente o tamanho da camada e o resumo do blob. Para o manifesto v1 , você pode HEAD o URL de download do blob para obter o tamanho real da camada.
Existe um script simples para lidar com os casos acima que serão mantidos continuamente.
fonte
Não exatamente a questão original, mas para encontrar a soma total de todas as imagens sem contagem dupla de camadas compartilhadas, o seguinte é útil (ubuntu 18):
fonte
Resolvi esse problema usando a função de pesquisa no site do Docker, onde '*' é uma pesquisa válida que retorna 200k repositórios e, em seguida, rastreei cada página individual. A análise de HTML me permite extrair todos os nomes das imagens em cada página.
fonte