Problema de autenticação executando o comando de pesquisa no registro do docker privado

2

Estou configurando um registro privado do Docker usando a imagem oficial. Eu iniciei uma instância usando o seguinte arquivo docker-compose:


registry:
  restart: always
  image: registry:2.3.1
  ports:
    - 5000:5000
  environment:
    REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
    REGISTRY_HTTP_TLS_KEY: /certs/domain.key
    REGISTRY_AUTH: htpasswd
    REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
    REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
    SEARCH_BACKEND: sqlalchemy
    SQLALCHEMY_INDEX_DATABASE: sqlite:////opt/sqlitedb/reg.db
  volumes:
    - /docker/registry/data:/var/lib/registry
    - /docker/registry/certs:/certs
    - /docker/registry/auth:/auth
    - /docker/registry/search:/opt/sqlitedb

Eu consigo fazer login corretamente:

root@domain:/home/foo# docker login registry.domain.com:5000
Username (foo): foo
Password: 
WARNING: login credentials saved in /root/.docker/config.json
Login Succeeded

Eu posso enviar imagens para o registro privado sem nenhum problema:

root@domain:/home/foo# docker tag hello-world registry.domain.com:5000/hello-world
root@domain:/home/foo# docker push registry.domain.com:5000/hello-world
The push refers to a repository [registry.domain.com:5000/hello-world]
5f70bf18a086: Layer already exists 
b652ec3a27e7: Layer already exists 
latest: digest: sha256:fea8895f450959fa676bcc1df0611ea93823a735a01205fd8622846041d0c7cf size: 708

O que não consigo fazer é pesquisar:

root@domain:/home/foo# docker search registry.domain.com:5000/hello
Error response from daemon: Unexpected status code 404

A instância do docker mostra isso:

registry_1 | time="2016-04-04T22:38:59Z" level=warning msg="error authorizing context: basic authentication challenge for realm \"Registry Realm\": invalid authorization credential" go.version=go1.5.3 http.request.host="registry.domain.com:5000" http.request.id=2f158656-545d-4cd0-a0a1-2d18f01843a4 http.request.method=GET http.request.remoteaddr="172.17.0.1:57196" http.request.uri="/v2/" http.request.useragent="docker/1.10.3 go/go1.5.3 git-commit/20f81dd kernel/4.2.0-27-generic os/linux arch/amd64" instance.id=cc656ad8-63a4-499e-bbde-ad797059e39e version=v2.3.1 
registry_1 | 172.17.0.1 - - [04/Apr/2016:22:38:59 +0000] "GET /v2/ HTTP/1.1" 401 87 "" "docker/1.10.3 go/go1.5.3 git-commit/20f81dd kernel/4.2.0-27-generic os/linux arch/amd64"
registry_1 | time="2016-04-04T22:38:59Z" level=warning msg="error authorizing context: basic authentication challenge for realm \"Registry Realm\": invalid authorization credential" go.version=go1.5.3 http.request.host="registry.domain.com:5000" http.request.id=6dcbc494-62b9-4f32-9c70-fece7c61a90b http.request.method=GET http.request.remoteaddr="172.17.0.1:57200" http.request.uri="/v2/" http.request.useragent="docker/1.10.3 go/go1.5.3 git-commit/20f81dd kernel/4.2.0-27-generic os/linux arch/amd64" instance.id=cc656ad8-63a4-499e-bbde-ad797059e39e version=v2.3.1 
registry_1 | 172.17.0.1 - - [04/Apr/2016:22:38:59 +0000] "GET /v2/ HTTP/1.1" 401 87 "" "docker/1.10.3 go/go1.5.3 git-commit/20f81dd kernel/4.2.0-27-generic os/linux arch/amd64"
registry_1 | 172.17.0.1 - - [04/Apr/2016:22:38:59 +0000] "GET /v1/search?q=hellow HTTP/1.1" 404 19 "" "docker/1.10.3 go/go1.5.3 git-commit/20f81dd kernel/4.2.0-27-generic os/linux arch/amd64"

Eu passei algumas horas pesquisando isso. O 404 aponta para o sqlalchemy do serviço de indexação que não está sendo implementado. Depois de passar pela versão mais recente da referência de configuração do registro , parece que a seção Search Backend não é mais válida. Então talvez a variável de env SEARCH_BACKEND no meu arquivo docker-compose esteja sendo ignorada e a indexação não esteja sendo feita (a pasta / opt / sqlitedb está vazia).

Por outro lado, o erro sugere que isso é um problema de autenticação.

Talvez o problema esteja nas diferenças entre v1 e v2 do registro. Eu não tenho experiência anterior com o registro, então acho que estou perdendo alguma coisa aqui. O que preciso fazer para que a pesquisa do docker esteja funcionando no meu registro particular?

Obrigado!

    
por Alex 05.04.2016 / 00:48

1 resposta

0

Por favor, tente com curl -

curl -X GET http://localhost:5001/v1/search?q=image_name

Isso lhe dará resultados no formato json.

Por favor, verifique o post antigo Como pesquisar imagens do registro privado?

    
por 29.08.2018 / 08:27