Skip to content

Bug when listing image tags with manifest list v2 #264

@Enrico204

Description

@Enrico204

Hi, I use this docker registry UI and I have an issue listing tag for images using manifest list for manifest v2, schema v2 (aka application/vnd.docker.distribution.manifest.list.v2+json).

Bug description

When pushing an image for manifest list v2, schema v2 (see below for example), the tag listing is showing the tag with an error (due to a 404 status for the HTTP request for that tag). However, when clicking on the tag history, the request is successful.

I traced down the request, and apparently the application/vnd.docker.distribution.manifest.list.v2+json is missing when list is not true:

(self.opts.list ? ', application/vnd.docker.distribution.manifest.list.v2+json' : '')

which is here and maybe somewhere else:

new DockerImage(props.image, tag, {

I think that is an error, but I admit that I'm not sure about that.

How to Reproduce

Steps to reproduce the behavior:

  1. Build/push an image using manifest list (v2)
  2. Open the UI, click on the image (an error appears after the list of tags is loaded)
  3. Click on the history button for the pushed manifest list, all details appear correctly

Expected behavior

List correctly all tags / support manifest list (v2) when listing tags.

Screenshots

Here the error when listing a tag:
Screenshot 2022-09-07 at 11-07-35 Docker Registry UI

Here is the full page of the tag history page:
Screenshot 2022-09-07 at 11-15-46 Docker Registry UI

System information

  • OS: Debian 11 (host), using docker container
  • Browser:
    • Name: Firefox
    • Version: 103
  • Docker registry UI:
    • Version: 2.2.1
    • Server: docker
    • Docker version: 20.10.5+dfsg1
    • Docker registry ui tag: 2
    • OS/Arch: linux/amd64
    • Tools: docker-compose

Additional context

Example container

As an example container, you can either pull the one I'm testing from Docker Hub: enrico204/debian-builder:stretch-v0-armel or you can build this Dockerfile:

FROM docker.io/arm32v5/debian:stretch

RUN apt-get update && apt-get install -yq mtr-tiny

Using this series of commands:

buildah manifest create test:armel
buildah bud -f Dockerfile --manifest test:armel --arch arm   --variant v7
buildah manifest push --all --format=docker test:armel docker://your.registry/test:armel

HTTP requests trace

When listing all tags for my image, I see an HTTP request to the tag which has this issue:

GET https://my.registry/v2/utilities/debian-builder/manifests/stretch-v0-armel
Status 404 Not Found
Version HTTP/2
Transferred 320 B (70 B size)
Referrer Policy strict-origin-when-cross-origin

    	
    content-length 70
    content-type application/json; charset=utf-8
    date Wed, 07 Sep 2022 09:25:00 GMT
    docker-distribution-api-version registry/2.0
    server nginx/1.21.6
    x-content-type-options nosniff
    X-Firefox-Spdy h2
    	
    Accept application/vnd.docker.distribution.manifest.v2+json, application/vnd.oci.image.manifest.v1+json, application/vnd.oci.image.index.v1+json
    Accept-Encoding gzip, deflate, br
    Accept-Language en-US,en;q=0.5
    Authorization Basic
    Cache-Control no-cache
    Connection keep-alive
    DNT 1
    Host my.registry
    Pragma no-cache
    Referer https://my.registry/?get=1
    Sec-Fetch-Dest empty
    Sec-Fetch-Mode cors
    Sec-Fetch-Site same-origin
    Sec-GPC 1
    TE trailers
    User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0

When opening the tag history I see this request instead:

GET https://my.registry/v2/utilities/debian-builder/manifests/stretch-v0-armel
Status 200 OK
Version HTTP/2
Transferred 762 B (315 B size)
Referrer Policy strict-origin-when-cross-origin
Request Priority Highest

    	
    content-length 315
    content-type application/vnd.docker.distribution.manifest.list.v2+json
    date Wed, 07 Sep 2022 09:28:16 GMT
    docker-content-digest sha256:fc2950e3a5646c210f1e3a242dc7d957291a3fae1bccb9d655c59d0c538141a3
    docker-distribution-api-version registry/2.0
    etag "sha256:fc2950e3a5646c210f1e3a242dc7d957291a3fae1bccb9d655c59d0c538141a3"
    server nginx/1.21.6
    x-content-type-options nosniff
    X-Firefox-Spdy h2
    	
    Accept application/vnd.docker.distribution.manifest.v2+json, application/vnd.oci.image.manifest.v1+json, application/vnd.oci.image.index.v1+json, application/vnd.docker.distribution.manifest.list.v2+json
    Accept-Encoding gzip, deflate, br
    Accept-Language en-US,en;q=0.5
    Authorization Basic
    Connection keep-alive
    DNT 1
    Host my.registry
    Referer https://my.registry/?get=1
    Sec-Fetch-Dest empty
    Sec-Fetch-Mode cors
    Sec-Fetch-Site same-origin
    Sec-GPC 1
    User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:103.0) Gecko/20100101 Firefox/103.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions