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

Garbage Collector does not remove multi-arch images #405

Open
XORTEX-DevOps opened this issue Dec 9, 2024 · 0 comments
Open

Garbage Collector does not remove multi-arch images #405

XORTEX-DevOps opened this issue Dec 9, 2024 · 0 comments

Comments

@XORTEX-DevOps
Copy link

Hi, I use this docker registry UI and I have an issue...

Bug description

Garbage Collector does not remove multi-arch images. If the manifest file (application/vnd.docker.distribution.manifest.list.v2+json) is deleted from the library, only the manifest list is deleted. The garbage collector does not delete the images, as the manifests still exist.

How to Reproduce

Use this API command to an multi-arch image (e.g. built with docker buildx)

curl -s -H "Accept: application/vnd.docker.distribution.manifest.list.v2+json" --head http://DOCKERREGISTRY_HOST/v2/IMAGENAME/MANIFESTS/TAG

HTTP/2 200
server: nginx
date: Mon, 09 Dec 2024 07:24:08 GMT
content-type: application/vnd.docker.distribution.manifest.list.v2+json
content-length: 403
access-control-allow-credentials: true
access-control-allow-headers: Authorization
access-control-allow-headers: Accept
access-control-allow-headers: Cache-Control
access-control-allow-methods: HEAD
access-control-allow-methods: GET
access-control-allow-methods: OPTIONS
access-control-allow-methods: DELETE
access-control-allow-origin: *
access-control-expose-headers: Docker-Content-Digest
docker-content-digest: sha256:b858b2cda3537aee28ecd3b479168815e6bcf63ad5d47f6f054e0086321a2aa4
docker-distribution-api-version: registry/2.0
etag: "sha256:b858b2cda3537aee28ecd3b479168815e6bcf63ad5d47f6f054e0086321a2aa4"
x-content-type-options: nosniff
docker-distribution-api-version: registry/2.0

Delete docker-contest-digest:

curl -X DELETE http://127.0.0.1:8080/v2/ubuntu/manifests/sha256: b858b2cda3537aee28ecd3b479168815e6bcf63ad5d47f6f054e0086321a2aa4

Run garbage-collect and nothing is deleted

My private docker registry configuration

version: 0.1
log:
  fields:
    service: registry
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
  delete:
    enabled: true
http:
  addr: :5000
  headers:
    X-Content-Type-Options:
      - nosniff
    Access-Control-Allow-Origin:
      - '*'
    Access-Control-Allow-Methods:
      - HEAD
      - GET
      - OPTIONS
      - DELETE
    Access-Control-Allow-Headers:
      - Authorization
      - Accept
      - Cache-Control
    Access-Control-Allow-Credentials:
      - 'true'
    Access-Control-Expose-Headers:
      - Docker-Content-Digest

Expected behavior

When run:

curl -s -H "Accept: application/vnd.docker.distribution.manifest.list.v2+json" http://DOCKERREGISTRY_HOST/v2/IMAGENAME/MANIFESTS/TAG

Result:

{
  "schemaVersion": 2,
  "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
  "manifests": [
    {
      "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
      "digest": "sha256:c8211f332fd940b62e68b551a49c1f3ffbe07c17c9eba89ed4fcbe5f301dafe4",
      "size": 1477,
      "platform": {
        "architecture": "amd64",
        "os": "linux"
      }
    }
  ]
}

All digest from manifest and the manifestlist (docker-content-digest) must be deleted e.g.

curl -X DELETE http://127.0.0.1:8080/v2/ubuntu/manifests/sha256: c8211f332fd940b62e68b551a49c1f3ffbe07c17c9eba89ed4fcbe5f301dafe4

and

curl -X DELETE http://127.0.0.1:8080/v2/ubuntu/manifests/sha256: b858b2cda3537aee28ecd3b479168815e6bcf63ad5d47f6f054e0086321a2aa4

When both are deleted, the garbage collector works like a charm.

System information

  • OS: Ubuntu
  • Browser:
    • Name: Chrome
    • Version: newest
  • Docker registry UI:
    • Version: 2.5.7
    • Server: docker
    • Docker version: 27.3.1,
    • Docker registry ui tag: latest
    • OS/Arch: linux/amd64
    • Tools: docker-compose
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

1 participant