Estou usando o Docker Registry v1 e estou interessado em migrar para a versão mais recente, v2. Mas preciso de uma maneira de obter uma lista de imagens presentes no registro; por exemplo, com o registro v1, posso executar uma solicitação GET http://myregistry:5000/v1/search?
e o resultado é:
{
"num_results": 2,
"query": "",
"results": [
{
"description": "",
"name": "deis/router"
},
{
"description": "",
"name": "deis/database"
}
]
}
Mas não consigo encontrar na documentação oficial algo semelhante para obter uma lista de imagens no registro. Alguém sabe uma maneira de fazê-lo na nova versão v2?
docker
docker-registry
kikicarbonell
fonte
fonte
Respostas:
Para a versão mais recente (em 31/07/2015) do Registro V2, você pode obter esta imagem no DockerHub:
Listar todos os repositórios (efetivamente imagens):
Listar todas as tags para um repositório:
fonte
http://<registry-url>/v2/_catalog?n=<count>
com contagem por exemplo 2000.curl -u <user>:<pass> -X GET ...
você pode pesquisar em
fonte
Obter catálogos
Por padrão, a API do registro retorna 100 entradas do catálogo, existe o código :
Quando você enrola a API do registro:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
Equivale a:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=100
Este é um método de paginação.
Quando a soma das entradas for superior a 100, você poderá fazer de duas maneiras:
Primeiro : dê um número maior
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=2000
Sencond : analisa o próximo URL do vinculador
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
Um elemento de link contido no cabeçalho de resposta:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
cabeçalho de resposta:
Link: </v2/_catalog?last=pro-octopus-ws&n=100>; rel="next"
O elemento do link tem a última entrada desta solicitação, e você pode solicitar a próxima 'página':
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?last=pro-octopus-ws
Se o cabeçalho da resposta contiver um elemento de link , você poderá fazê-lo em um loop .
Obter Imagens
Quando você obtém o resultado do catálogo, é o seguinte:
{ "repositories": [ "busybox", "ceph/mds" ] }
você pode obter as imagens em todos os catálogos:
curl --cacert domain.crt https://your.registry:5000/v2/busybox/tags/list
retorna:
{"name":"busybox","tags":["latest"]}
fonte
ceph/mds
? em geral, para qualquer repositório definido com/
-/v2/_catalog/ceph/mdt/tags/list
não trabalhoA versão mais recente do Docker Registry disponível em https://github.com/docker/distribution suporta a API do catálogo. (v2 / _catalog). Isso permite a capacidade de pesquisar repositórios
Se estiver interessado, você pode tentar o CLI de registro de imagem do docker que criei para facilitar o uso dos recursos de pesquisa na nova distribuição do Docker Registry ( https://github.com/vivekjuneja/docker_registry_cli )
fonte
Criamos uma ferramenta CLI para esse fim: docker-ls Permite navegar em um registro do docker e suporta autenticação por token ou autenticação básica.
fonte
Isso está me deixando louco, mas finalmente reuni todas as peças. Desde 25/01/2015, confirmei que é possível listar as imagens no registro do docker V2 (exatamente como @jonatan mencionado acima).
Eu votaria nessa resposta se tivesse o representante.
Em vez disso, vou expandir a resposta. Como o registro V2 é feito com a segurança em mente, acho apropriado incluir como configurá-lo com um certificado autoassinado e executar o contêiner com esse certificado para que uma chamada https possa ser feita com esse certificado:
Este é o script que eu realmente uso para iniciar o registro:
Isso pode ser óbvio para alguns, mas eu sempre me confundo com chaves e certificados. O arquivo que precisa ser referenciado para fazer a chamada @jonaton menciona acima **, é o domain.crt listado acima. (Desde que coloquei domain.crt
/root
, fiz uma cópia no diretório do usuário em que ele poderia ser acessado.)** O comando acima foi alterado: -X GET não funcionou quando tentei.
Nota:
https://myregistry:5000
(como acima) deve corresponder ao domínio atribuído ao certificado gerado.fonte
Instale o registro: 2.1.1 ou posterior (você pode verificar o último aqui ) e use GET / v2 / _catalog para obter a lista.
https://github.com/docker/distribution/blob/master/docs/spec/api.md#listing-repositories
Lista todas as imagens por exemplo de script do Shell: https://gist.github.com/OndrejP/a2386d08e5308b0776c0
fonte
Aqui está um pequeno liner agradável (usa JQ) para imprimir uma lista de repositórios e tags associadas.
Se você não tiver
jq
instalado, poderá usar:brew install jq
fonte
Eu tive que fazer o mesmo aqui e os trabalhos acima, exceto que tive que fornecer detalhes de login, pois era um repositório de docker local.
É conforme o descrito acima, mas com o fornecimento do nome de usuário / senha no URL.
Ele volta como JSON não formatado.
Eu o canalizei através do formatador python para facilitar a leitura humana, caso você queira tê-lo nesse formato.
fonte
Usando os pontos de extremidade "/ v2 / _catalog" e "/ tags / list", não é possível listar todas as imagens. Se você pressionou algumas imagens diferentes e as marcou como "mais recentes", não pode realmente listar as imagens antigas! Você ainda pode puxá-los se consultá-los usando digest "docker pull ubuntu @ sha256: ac13c5d2 ...". Portanto, a resposta é: não há como listar imagens, você pode listar apenas tags que não são iguais
fonte
Se alguns chegarem tão longe.
Tomando o que outros já disseram acima. Aqui está uma lista que coloca a resposta em um arquivo de texto formatado, json.
Isso parece
Pode ser necessário alterar o `? N = xxxx 'para corresponder a quantos contêineres você possui.
A seguir, é uma maneira de remover automaticamente contêineres antigos e não utilizados.
fonte
A funcionalidade do registro de pesquisa do Docker v2 não é suportada no momento neste momento. Consulte a discussão desde fevereiro de 2015: "propor a funcionalidade de pesquisa de registro # 206" https://github.com/docker/distribution/issues/206
Eu escrevi um script que você pode encontrar: https://github.com/BradleyA/Search-docker-registry-v2-script.1.0 Não é bonito, mas obtém as informações necessárias no registro privado.
fonte
Eu escrevi uma ferramenta de linha de comando fácil de usar para listar imagens de várias maneiras (como listar todas as imagens, listar todas as tags dessas imagens, listar todas as camadas dessas tags).
Também permite excluir imagens não utilizadas de várias maneiras, como excluir apenas tags mais antigas de uma única imagem ou de todas as imagens, etc. Isso é conveniente quando você está preenchendo seu registro de um servidor de IC e deseja manter apenas as versões mais recentes / estáveis.
Está escrito em python e não precisa que você baixe imagens grandes e grandes de registro personalizadas.
fonte
Aqui está um exemplo que lista todas as tags de todas as imagens no registro. Ele também lida com um registro configurado para autenticação HTTP Basic.
Explicação:
fonte
Esse encadeamento remonta há muito tempo, as ferramentas mais recentes que se deve considerar são
skopeo
ecrane
.skopeo
suporta assinatura e possui muitos outros recursos, enquantocrane
é um pouco mais minimalista e achei mais fácil integrar com um simples shell script.fonte
Como cada registro é executado como um contêiner, o ID do contêiner possui um arquivo de log associado ID-json.log, que contém os arquivos vars.name = [imagem] e vars.reference = [tag]. Um script pode ser usado para extrapolar e imprimi-los. Esse talvez seja um método para listar imagens enviadas para o registro V2-2.0.1.
fonte