docker-registry-ui icon indicating copy to clipboard operation
docker-registry-ui copied to clipboard

Bug when listing multi-arch images

Open loliee opened this issue 2 years ago • 0 comments

Hi, I use this docker registry UI and I have an issue in list page for some multi-arch images.

Bug description

Some multi-arch images are not well displayed in list page, detail page works well.

How to Reproduce

Here what I did :

skopeo copy --insecure-policy  --multi-arch=all docker://docker.io/nginx:1.23 docker://mdpt.io/nginx:1.23

And go to nginx list page, (first time list is correctly displayed) but If I go on detail page and come back on the list page I have the bug and it never disappear, cf. screenshot.

Expected behavior

I would like to see images with date, size and digest.

Screenshots

Screen Shot 2022-08-03 at 1 01 34 PM

System information

  • Browser:
    • Name: Chrome
    • Version: Version 103.0.5060.134 (Official Build) (x86_64)
    • Name: Firefox
    • Version: 103.0.1 (64-bit)
  • Docker registry UI:
    • Version: 2.2.1
    • Server: docker
  • Registry
    • Version: 2.8.1
    • Server: docker

Additional context

In my browser console I have the following error for the XHR GET https://myregistry.url/v2/nginx/manifests/1.23:

Uncaught TypeError: r.layers is undefined
    value https://myregistry.url/ui/docker-registry-ui.js:20
    value https://myregistry.url/ui/docker-registry-ui.js:20
    value https://myregistry.url/ui/docker-registry-ui.js:20
    value https://myregistry.url/ui/docker-registry-ui.js:20
    e https://myregistry.url/ui/docker-registry-ui.js:20
    xr https://myregistry.url/ui/docker-registry-ui.js:20
    xr https://myregistry.url/ui/docker-registry-ui.js:20
    onMounted https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    update https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    o https://myregistry.url/ui/docker-registry-ui.js:20
    update https://myregistry.url/ui/docker-registry-ui.js:20
    update https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    update https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    update https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    update https://myregistry.url/ui/docker-registry-ui.js:20
    update https://myregistry.url/ui/docker-registry-ui.js:20
    update https://myregistry.url/ui/docker-registry-ui.js:20
    update https://myregistry.url/ui/docker-registry-ui.js:20
    display https://myregistry.url/ui/docker-registry-ui.js:20
    value https://myregistry.url/ui/docker-registry-ui.js:20
    value https://myregistry.url/ui/docker-registry-ui.js:20
    display https://myregistry.url/ui/docker-registry-ui.js:20
    onMounted https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    update https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    mount https://myregistry.url/ui/docker-registry-ui.js:20
    update https://myregistry.url/ui/docker-registry-ui.js:20
    update https://myregistry.url/ui/docker-registry-ui.js:20
    update https://myregistry.url/ui/docker-registry-ui.js:20
    update https://myregistry.url/ui/docker-registry-ui.js:20
    onRoute https://myregistry.url/ui/docker-registry-ui.js:20
    zt https://myregistry.url/ui/docker-registry-ui.js:20
    zt https://myregistry.url/ui/docker-registry-ui.js:20
    push https://myregistry.url/ui/docker-registry-ui.js:20
    promise callback*push https://myregistry.url/ui/docker-registry-ui.js:20
    zt https://myregistry.url/ui/docker-registry-ui.js:20

The JSON response doesn't contains the layers key, cf the response:

{"manifests":[{"digest":"sha256:f26fbadb0acab4a21ecb4e337a326907e61fbec36c9a9b52e725669d99ed1261","mediaType":"application\/vnd.docker.distribution.manifest.v2+json","platform":{"architecture":"amd64","os":"linux"},"size":1570},{"digest":"sha256:df0d884bcf2e51ad370f16bcbe6d4cef68fd8057b63da89b77c228a680e7ed8a","mediaType":"application\/vnd.docker.distribution.manifest.v2+json","platform":{"architecture":"arm","os":"linux","variant":"v5"},"size":1570},{"digest":"sha256:ef2ad3781f412ae3052ef56f5938be93fef49d4204ecb36af2cec4d443ad9895","mediaType":"application\/vnd.docker.distribution.manifest.v2+json","platform":{"architecture":"arm","os":"linux","variant":"v7"},"size":1570},{"digest":"sha256:f5bee9654d19467f16c259fb577c4a28c082f8008914befd30805f803fa56e99","mediaType":"application\/vnd.docker.distribution.manifest.v2+json","platform":{"architecture":"arm64","os":"linux","variant":"v8"},"size":1570},{"digest":"sha256:d830cc525721daa5769bf9876db421987aefeff16c5074edc0c6b9061f8ff359","mediaType":"application\/vnd.docker.distribution.manifest.v2+json","platform":{"architecture":"386","os":"linux"},"size":1570},{"digest":"sha256:3e7402f0eb053ffd769097c9c726b39b0318e3f5a2538e7b63779714e646de93","mediaType":"application\/vnd.docker.distribution.manifest.v2+json","platform":{"architecture":"mips64le","os":"linux"},"size":1570},{"digest":"sha256:f1d915d7215a80b1a294ec8e9005a4b7984e650e06cb9b52f57e830576245c74","mediaType":"application\/vnd.docker.distribution.manifest.v2+json","platform":{"architecture":"ppc64le","os":"linux"},"size":1570},{"digest":"sha256:ead4adf366b0333e5f7e10f32b2b7814b3ea39807db3c3ac029d4404140da5b0","mediaType":"application\/vnd.docker.distribution.manifest.v2+json","platform":{"architecture":"s390x","os":"linux"},"size":1570}],"mediaType":"application\/vnd.docker.distribution.manifest.list.v2+json","schemaVersion":2}

Thanks you

loliee avatar Aug 03 '22 11:08 loliee