Garbage Collector wants to remove everything ???
Author: luckylinuxCreated Sep 22, 2025Updated Aug 15, 2026
Description
I am trying to free up some Space used by my local Docker Mirror (which is running Registry 3.0.0) after I removed some Tags e.g. on the frigate Docker Image:
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:833cdcb-h8l
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:d0cc8cb-h8l
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:d0cc8cb-rocm
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-beta4
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-beta4-h8l
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-beta4-rk
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-beta4-rocm
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-beta5
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-beta5-h8l
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-beta5-rk
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-beta5-rocm
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-beta7
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-beta7-rk
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-beta7-rocm
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-h8l
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-rc1
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-rc1-h8l
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-rc1-rk
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-rc1-rocm
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-rc2
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-rc2-rk
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-rc2-rocm
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-rk
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.0-rocm
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.1
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.1-h8l
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.1-rk
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.1-rocm
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.2
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.2-h8l
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.2-rk
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.15.2-rocm
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.16.0-rc3
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.16.0-rc3-rk
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.16.0-rc3-rocm
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.16.0-rc3-standard-arm64
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.16.0-rc3-tensorrt
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.16.0-rc3-tensorrt-jp6
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.16.0-rc4
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.16.0-rc4-rk
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.16.0-rc4-rocm
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.16.0-rc4-standard-arm64
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.16.0-rc4-tensorrt
root@docker-sync-registries:/opt/app# regctl tag rm docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate:0.16.0-rc4-tensorrt-jp6
root@docker-sync-registries:/opt/app# regctl tag ls docker.MYDOMAIN.TLD/ghcr.io/blakeblackshear/frigate
0.16.0
0.16.0-rk
0.16.0-rocm
0.16.0-standard-arm64
0.16.0-tensorrt
0.16.0-tensorrt-jp6
stable
stable-rkHowever, when running the Garbage Collector after this, it seems like the Garbage Collector wants to remove EVERYTHING basically, including the Tags that were NOT removed.
Configuration File:
/ # cat /etc/docker/registry/config.yml
version: 0.1
auth:
token:
realm: "https://docker-auth.MYDOMAIN.TLD/auth"
service: "Docker Registry"
issuer: "docker-local-mirror-auth"
rootcertbundle: "/cert/auth/cert.pem"
autoredirect: false
storage:
filesystem:
rootdirectory: /var/lib/registry
maintenance:
uploadpurging:
enabled: true
age: 999999999h
interval: 24h
dryrun: false
delete:
enabled: true
http:
addr: "[::]:5000"
prefix: ""
secret: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXReproduce
- Enter the Container with
podman exec -it registry /bin/sh - Run
/bin/registry garbage-collect /etc/docker/registry/config.yml --dry-run --delete-untagged
Logs:
20250922_registry_garbage_collection.txt.gz
Everything seems to be marked for deletion (including the Docker Images of e.g. frigate-0.16.0 which are NOT untagged), or am I misunderstanding the Output ?
Expected behavior
Only untagged Images and very old ones (999999999h) should be marked for Deletion.
registry version
registry github.com/distribution/distribution/v3 3.0.0
Additional Info
No response
Source: distribution/distribution