Репозиторий / изображение с недопустимым именем в реестре Sonatype Nexus3 Docker - PullRequest
0 голосов
/ 11 марта 2020

Context

Я использую функцию реестра Docker в Sonatype Nexus3 (версия OSS 3.18.1-01) для хранения частных Docker изображений.

Через пару дней go изображения с недопустимыми именами оказались в реестре, что вызвало многократные повторяющиеся ошибки с внутренней очисткой заданий cron в Nexus3. Вы можете увидеть имена неисправных репозиториев в выводе запроса v2 / _catalog ниже.

$ curl https://registry.example.com/v2/_catalog -i

HTTP/1.1 200 OK
Date: Wed, 11 Mar 2020 12:55:29 GMT
Server: Nexus/3.18.1-01 (OSS)
X-Content-Type-Options: nosniff
Content-Security-Policy: sandbox allow-forms allow-modals allow-popups allow-presentation allow-scripts allow-top-navigation
X-XSS-Protection: 1; mode=block
Docker-Distribution-Api-Version: registry/2.0
Content-Type: application/json
Content-Length: 2941

{
  "repositories": [
    "MiniProfiler.EF6",
    "MiniProfiler.Shared",
    ...
  ]
}

На данный момент я не знаю, были ли эти изображения помещены в реестр кем-то из моей команды или они результат какой-то неожиданной проблемы с хранилищем BLOB-объектов - у меня нет возможности это проверить. Интересный факт: есть пакеты NuGet, названные одинаково в другом хранилище BLOB-объектов в том же экземпляре Nexus.

Действия по устранению неполадок

Я пытался удалить неисправные образы из реестра несколькими способами, все без успеха.

Nexus3 GUI

Неисправные репозитории не отображаются в браузере реестра Docker в Nexus 'GUI. Они также не могут быть найдены с помощью функции поиска Nexus.

Nexus3 встроенный OrientDB

Я искал классы asset и component, связанные с неисправными репозиториями в OrientDB. К сожалению, в базе данных Nexus нет ресурсов или компонентов с такими именами.

Docker Registry API v2

Я также пытался удалить их через Docker Registry API V2, но неверный формат имени, кажется, вызывает проблемы, когда я пытаюсь выполнить какую-либо операцию в неисправном хранилище.

$ curl https://registry.example.com/v2/MiniProfiler.EF6/manifests/latest -i

HTTP/1.1 400 Bad Request
Date: Wed, 11 Mar 2020 12:58:24 GMT
Server: Nexus/3.18.1-01 (OSS)
X-Content-Type-Options: nosniff
Content-Security-Policy: sandbox allow-forms allow-modals allow-popups allow-presentation allow-scripts allow-top-navigation
X-XSS-Protection: 1; mode=block
Docker-Distribution-Api-Version: registry/2.0
Content-Type: application/json
Content-Length: 165

{
  "errors": [
    {
      "code": "NAME_INVALID",
      "message": "invalid repository name",
      "detail": [
        {
          "Name": "MiniProfiler.EF6"
        },
        {
          "Reason": "invalid path component: MiniProfiler.EF6"
        }
      ]
    }
  ]
}

Docker CLI

Как и ожидалось, Docker CLI не например, неверный формат имени.

$ docker pull registry.example.com/MiniProfiler.EF6
invalid reference format: repository name must be lowercase

Если я удаляю заглавные буквы из имени изображения, реестр возвращает ошибку 404. Not Found.

$ docker pull registry.example.com/miniprofiler.ef6
Using default tag: latest
Error response from daemon: manifest for registry.example.com/miniprofiler.ef6:latest not found: manifest unknown: manifest unknown

Вопросы

Кто-нибудь сталкивался с такими проблемами с Nexus3? Кто-нибудь когда-либо сталкивался с такими проблемами с другой реализацией реестра Docker?

Если у кого-нибудь есть какие-либо шаги по устранению неполадок, чтобы предложить, я в значительной степени открыт для всего на данный момент ...

I также будет сообщать об ошибке в Sonatype, чтобы обеспечить хорошую видимость этой ситуации.

...