Назад | Перейти на главную страницу

Проблема аутентификации при запуске команды поиска в частном реестре докеров

Я настраиваю частный реестр Docker, используя официальный образ. Я запустил экземпляр, используя следующий файл 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

Я могу войти в систему нормально:

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

Я могу без проблем отправлять изображения в частный реестр:

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

Я не могу искать:

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

Экземпляр докера выплевывает это:

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"

Я потратил несколько часов на изучение этого. 404 указывает на то, что служба индексирования sqlalchemy не развернута. Пройдя последнюю версию справочник по конфигурации реестра, похоже, что раздел Search Backend больше не действует. Так что, возможно, переменная env SEARCH_BACKEND в моем файле docker-compose игнорируется, и индексация не выполняется (папка / opt / sqlitedb пуста).

С другой стороны, ошибка предполагает, что это проблема аутентификации.

Может проблема в различиях между v1 и v2 реестра. У меня нет предыдущего опыта работы с реестром, поэтому я думаю, что здесь что-то не хватает. Что мне нужно сделать, чтобы поиск докеров работал в моем частном реестре?

Спасибо!

Пожалуйста, попробуйте с curl-

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

Это даст вам результат в формате json.

Пожалуйста, проверьте старый пост Как искать изображения из частного реестра?