docker-registry-ui
docker-registry-ui copied to clipboard
Bug when listing multi-arch images
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

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
- Version:
- Registry
- Version:
2.8.1
- Server: docker
- Version:
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