Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi-arch manifest list not rendering properly #401

Open
Bvngee opened this issue Nov 9, 2024 · 1 comment
Open

Multi-arch manifest list not rendering properly #401

Bvngee opened this issue Nov 9, 2024 · 1 comment

Comments

@Bvngee
Copy link

Bvngee commented Nov 9, 2024

Hi! Firstly, thank you for this awesome project. I've seen #227, #308, and #309 and I'm not sure if this is a duplicate or not; feel free to close it if so.

Bug description

My problem is that my multi-arch manifest list doesn't have working history nor creation date or architecture listings.

How to Reproduce

The steps I used are the following: I built a docker container for my project on two separate computers, one amd64 and the other arm64, and pushed the resulting images directly to my private registry with separate tags (see screenshot). Then, I used docker buildx imagetools create to create a multi-arch image (manifest list) from these two images. (I am aware of other ways of building multi-arch images in one command; I am building them separately on purpose, to avoid needing QEMU emulation or cross compiling). This appears to work fine on the registry-side; docker pull <registry>/image:latest succeeded on both machines. However the architectures/creation date don't appear and the history is disabled. (Again let me know if this is known/won't fix/duplicate)

Note the following irregularity: one of the computer's docker engine version is much older than the other, and is not using the containerd image store. It's output is in the vnd.docker.distribution.* media types whereas the newer one outputs the vnd.oci.image.* media types. Additionally, the newer one's resulting image (application/vnd.oci.image.index.v1+json) is actually a manifest list (with attestations being the second manifest if I understand right) but the other one (application/vnd.docker.distribution.manifest.v2+json) is just the image.

Output of `docker manifest inspect registry/image:latest`:
{
   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
   "manifests": [
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 2823,
         "digest": "sha256:d8a9dbb842c20ea9226e677844d5d7a7cd37b6341cc0d7505ab94265e172093f",
         "platform": {
            "architecture": "arm64",
            "os": "linux"
         }
      },
      {
         "mediaType": "application/vnd.oci.image.manifest.v1+json",
         "size": 2567,
         "digest": "sha256:afe0693d75c092ba6e6d1be15514ef43887730c5ec27c38728e63a7138f586b1",
         "platform": {
            "architecture": "amd64",
            "os": "linux"
         }
      },
      {
         "mediaType": "application/vnd.oci.image.manifest.v1+json",
         "size": 566,
         "digest": "sha256:a255b2342541c98b0157d1a42643fe4f91ba8d490f0a191dd31e983c2566e970",
         "platform": {
            "architecture": "unknown",
            "os": "unknown"
         }
      }
   ]
}

Screenshots

2024 11 9-1:16am

My docker-compose file

...
  registry-ui:
    image: joxit/docker-registry-ui:main
    restart: always
    ports:
      - 8000:80
    environment:
      - SINGLE_REGISTRY=true
      - REGISTRY_TITLE=Bvngee's Private Registry
      - DELETE_IMAGES=true
      - SHOW_CONTENT_DIGEST=true
      - NGINX_PROXY_PASS_URL=http://registry:5000
      - SHOW_CATALOG_NB_TAGS=true
      - CATALOG_MIN_BRANCHES=1
      - CATALOG_MAX_BRANCHES=1
      - TAGLIST_PAGE_SIZE=100
      - REGISTRY_SECURED=true
      - CATALOG_ELEMENTS_LIMIT=1000
...

My private docker registry configuration

  registry:
    restart: always
    image: registry:2
    ports:
      - 5000:5000
    volumes:
      - registry:/var/lib/registry
    environment:
      REGISTRY_HTTP_HEADERS_Access-Control-Allow-Origin: "[http://registry.bvngee.com]"
      REGISTRY_HTTP_HEADERS_Access-Control-Allow-Methods: "[HEAD,GET,OPTIONS,DELETE]"
      REGISTRY_HTTP_HEADERS_Access-Control-Allow-Credentials: "[true]"
      REGISTRY_HTTP_HEADERS_Access-Control-Allow-Headers: "[Authorization,Accept,Cache-Control]"
      REGISTRY_HTTP_HEADERS_Access-Control-Expose-Headers: "[Docker-Content-Digest]"
      REGISTRY_STORAGE_DELETE_ENABLED: "true"

Expected behavior

The manifest list should render just like any other multi-platform image, with both arches listed and a working history. Unless there is something fundamentally preventing this that I don't understand?

System information

  • OS: NixOS 24.05 (amd64), Ubuntu 22.04 (arm64)
  • Browser:
    • Name: Firefox
    • Version: 129.0.2
  • Docker registry UI:
    • Version: v2.6.0
    • Server: docker
    • Docker version: 26.1.3
    • Docker registry ui tag: main
    • OS/Arch: linux/amd64, linux/arm64
    • Tools: docker-compose
@0x217
Copy link

0x217 commented Nov 16, 2024

Hello, I am experiencing the same issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants