Como procurar imagens do registo privado 1.0 no docker?
fiz um registo privado, curl xx. xx. xx. xx: 5000 está bem.
Introduzo uma imagem no registo privado do docker fazendo:
docker push xx.xx.xx.xx:5000/centos
volta.:http://xx.xx.xx.xx:5000/v1/repositories/centos/tags/latest
a questão é como obter todas as imagens da web de registro ou qualquer coisa do comando. Não consigo encontrar nenhuma informação da api do registo docker. alguém ajuda ? :)
9 answers
A partir de v 0.7.0 do registo privado pode fazer:
$ curl -X GET http://localhost:5000/v1/search?q=postgresql
E terás uma carga json:
{"num_results": 1, "query": "postgresql", "results": [{"description": "", "name": "library/postgresql"}]}
Para dar mais informações, foi assim que iniciei o meu registo:
docker run \
-e SETTINGS_FLAVOR=local \
-e STORAGE_PATH=/registry \
-e SEARCH_BACKEND=sqlalchemy \
-e LOGLEVEL=DEBUG \
-p 5000:5000 \
registry
Agora a partir do docker client você pode simplesmente procurar o seu registo privado directamente sem usar a APIs HTTP ou quaisquer ferramentas extra:
Por exemplo, à procura da imagem centos:
docker search localhost:5000/centos
Então eu sei que este é um campo em rápida mudança, mas (a partir de 2015-09-08) eu encontrei o seguinte no registro de Docker HTTP API v2:
Listar repositórios (ligação)
GET /v2/_catalog
Listar marcas de imagem (ligação)
GET /v2/<name>/tags/list
Baseado na seguinte trabalhou para mim em um local de registro (registro:2 IMAGEM de IDENTIFICAÇÃO de 1e847b14150e365a95d76a9cc6b71cd67ca89905e3a0400fa44381ecf00890e1 criado em 2015-08-25T07:55:17.072):
$ curl -X GET http://localhost:5000/v2/_catalog
{"repositories":["ubuntu"]}
$ curl -X GET http://localhost:5000/v2/ubuntu/tags/list
{"name":"ubuntu","tags":["latest"]}
Actualmente não existe nenhum suporte de pesquisa para o registo do Docker v2.
Havia um tópico de longa duração sobre o tópico . O plano atual é apoiar a pesquisa com uma extensão no final, que deve ser pronta por v2.1.
Como um workaround , execute o seguinte na máquina onde o seu registo v2 está a correr:
> docker exec -it <your_registry_container_id> bash
> ls /var/lib/registry/docker/registry/v2/repositories/
As imagens estão em subdiretórios correspondentes ao seu espaço de nomes, e.g. jwilder/nginx-proxy
docker search [my.registry.host]:[port]/library
O Devolve (p. ex.):
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
library/custom-image 0
library/another-image 0
library/hello-world 0
docker run -p 8080:8080 -e REG1=http://registry_host.name:5000/v1/ atcol/docker-registry-ui
E rever o conteúdo navegando para registry_ui_host.name:8080
Actualmente não existe uma forma fácil de o fazer, uma vez que esta informação deve ser armazenada por um índice que o registo privado não tem. Mas dependendo de como você começou o registro você tem 2 opções:
- se iniciou o registo sem-v para guardar os dados na pasta da máquina separada, poderá tentar com
docker diff <id_of_registry_container>
com isto, deverá obter informações sobre as alterações no fs do contentor. Todas as imagens empurradas devem estar algures no /tmp/registry/repositories / - se começar a registar-se com-v apenas verificar o conteúdo da pasta montada na máquina
Se usou "centos" como nome, deve estar em /tmp/registry/repositórios/library/centos. Esta pasta irá conter ficheiros de texto que descrevem a estrutura da imagem. Os dados reais estão em /tmp/registry/images/.
Listar todas as imagens
docker search <registry_host>:<registry_port>/
Listar imagens como ' vcs '
docker search <registry_host>:<registry_port>/vcs
Outro método uma linha (substituir o seu caminho/portos reais, se necessário). Exemplo: assume um registo Genérico: arranque 2.0 O container de registro em execução tem um arquivo de registro que contém nomes de imagens e tags. Extrapolei os dados assim:
Grep-r-o "vars.name=.* vars.referência=. " / var/lib/docker/containers | | cut-c 167-225/sed 's / ver.* $ / / '|sed 's/vars.name=//' | sed 's/ vars.referência=/: | ' / sort-u
Pode ser necessário ajustar os valores de corte para obter a saída desejada.