Como obter uma lista de imagens no registro do docker v2
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 registo. Alguém sabe como fazê-lo na nova versão v2?
13 answers
Para a última versão (a partir de 2015-07-31) do registo V2, pode obter esta imagem do DockerHub:
docker pull distribution/registry:master
Lista todos os repositórios (efectivamente imagens):
curl -X GET https://myregistry:5000/v2/_catalog
> {"repositories":["redis","ubuntu"]}
Lista todas as marcas de um repositório:
curl -X GET https://myregistry:5000/v2/ubuntu/tags/list
> {"name":"ubuntu","tags":["14.04"]}
Podes procurar em
Http://
<ip/hostname>
:<port>
/v2/_catalog
Arranja catálogos
Por omissão, a api do registo devolve 100 entradas do catálogo, existe o código :
Quando se fecha a api do registo:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
É equivalente com:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog?n=100
Quando a soma das entradas para além de 100, você pode 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 linker url
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
Um elemento de ligação contido no cabeçalho de resposta:
curl --cacert domain.crt https://your.registry:5000/v2/_catalog
Cabeçalho da resposta:
Link: </v2/_catalog?last=pro-octopus-ws&n=100>; rel="next"
O elemento link tem a última entrada deste pedido, então 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 de resposta contiver link , você pode fazê-lo num laço .
Obter Imagens
Quando se obtém o resultado do catálogo, é como{
"repositories": [
"busybox",
"ceph/mds"
]
}
curl --cacert domain.crt https://your.registry:5000/v2/busybox/tags/list
Devolve:
{"name":"busybox","tags":["latest"]}
A última versão do registo Docker disponível em https://github.com/docker/distribution suporta a API do catálogo. (v2 / _catalog). Isto permite a capacidade de pesquisar repositórios
Se estiver interessado, pode tentar o registo de imagens do docker CLI que construí para facilitar a utilização das funcionalidades de pesquisa na distribuição do novo registo do Docker ( https://github.com/vivekjuneja/docker_registry_cli)
Este é o script que eu realmente uso para iniciar o Registro:
sudo docker stop registry
sudo docker rm -v registry
sudo docker run -d \
-p 5001:5001 \
-p 5000:5000 \
--restart=always \
--name registry \
-v /data/registry:/var/lib/registry \
-v /root/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
-e REGISTRY_HTTP_DEBUG_ADDR=':5001' \
registry:2.2.1
Isto pode ser óbvio para alguns, mas misturo-me sempre com chaves e certs. O arquivo que precisa ser referenciado para fazer a chamada @jonaton menciona acima**, é o domínio.crt listado acima. (Desde que coloquei domínio.crt in /root
, eu fiz uma cópia para o diretório de usuário onde ele poderia ser acessado. )
curl --cacert ~/domain.crt https://myregistry:5000/v2/_catalog
> {"repositories":["redis","ubuntu"]}
* * a o comando acima foi alterado: - X GET realmente não funcionou quando eu tentei.
Nota: https://myregistry:5000
(como acima ) deve corresponder ao Domínio dado ao certificado gerado.
Por favor veja a resposta de @jonathan abaixo , ou os documentos da API do registro aqui: https://docs.docker.com/registry/spec/api/
Se procurar por "listagem" verá que o suporte foi adicionado na versão {[[0]}.
Escrevemos uma ferramenta de CLI para este fim: o docker-ls {[3] } permite-lhe navegar num registo de docker e suporta a autenticação através do token ou da Autenticação Básica.
Instalar o registo:2.1. 1 ou mais tarde (poderá verificar o último, Aqui ) e usar o GET /v2/_catalog para obter a lista.
Https://github.com/docker/distribution/blob/master/docs/spec/api.md#listing-repositories
Listar todas as imagens por exemplo de script da linha de comandos: https://gist.github.com/OndrejP/a2386d08e5308b0776c0
Tomando o que outros já disseram acima. Aqui está um liner que coloca a resposta em um arquivo de texto formatado, json.
curl "http://mydocker.registry.domain/v2/_catalog?n=2000" | jq . - > /tmp/registry.lst
Isto parece ...
{
"repositories": [
"somerepo/somecontiner",
"somerepo_other/someothercontiner",
...
]
}
Talvez precises de mudar o'?n = xxxx ' para corresponder a quantos contentores tem.
A seguir é uma forma de remover automaticamente os recipientes antigos e não utilizados.
A funcionalidade do registo de pesquisa V2 do Docker não é suportada de momento no momento desta escrita. Ver discussão desde fevereiro de 2015: "propose registry search functionality #206" https://github.com/docker/distribution/issues/206
Escrevi um guião que podes encontrar: https://github.com/BradleyA/Search-docker-registry-v2-script.1.0 Não é bonito, mas recebe a informação necessária do registro privado.
Escrevi uma ferramenta fácil de usar da linha de comandos para listar imagens de várias formas (como listar todas as imagens, listar todas as marcas dessas imagens, listar todas as camadas dessas marcas).
Também lhe permite apagar as imagens não utilizadas de várias formas, como por exemplo apagar apenas as marcas mais antigas de uma única imagem ou de todas as imagens, etc. Isto é conveniente quando você está preenchendo seu registro a partir de um servidor de CI e quer manter apenas as versões mais recentes/estáveis.
Está escrito em python e não precisa de TI para transferir grandes e volumosas imagens de Registo personalizadas.
Eu tinha que fazer o mesmo aqui e os trabalhos acima, exceto que eu tinha que fornecer detalhes de login como era um repositório de docker local.
É como para o acima, mas com o fornecimento do nome de utilizador/Senha no URL.
curl -k -X GET https://yourusername:yourpassword@theregistryURL/v2/_catalog
Parece um JSON sem forma.
Eu piped it through the python formatter for ease of human reading, in case you would like to have it in this format.
curl -k -X GET https://yourusername:yourpassword@theregistryURL/v2/_catalog | python -m json.tool
Uma vez que cada registo funciona como um contentor, o identificador do contentor tem um ficheiro de registo associado ID-json.registar este ficheiro de registo contém o vars.name = [imagem] e vars.reference=[tag]. Um script pode ser usado para extrapolar e imprimir estes. Este é talvez um método para listar imagens empurradas para o registro V2-2.0.1.