Push. Pull. Forget.
Just enough on top of your registry:3
to stop your disk — and your life — from bloating.
Push with a TTL, pull while it lasts, forget the rest.
Your registry, your disk back.
$ docker tag my-app:build my-registry:5000/my-app:10m $ docker push my-registry:5000/my-app:10m # …10 minutes later it's due — the next sweep deletes it.
Try it.
Note this is not a drop-in replacement — kpr is not
a registry, it keeps one clean and tidy. You run a
stock registry:3 beside it on a shared
volume; kpr marks, sweeps, and collects around it.
Ten minutes, two containers, no database: quickstart. Already run distribution? bolt it on instead.
In short: compose.yml + registry-config.yml per the quickstart, then:
$ docker compose up -d $ crane copy busybox:latest localhost:5000/test/hello:10s # ...wait ~10s for the TTL to elapse, then arm both explicitly: $ docker exec kpr kpr reap --no-dry-run $ docker exec kpr kpr plan # see what's due $ docker exec kpr kpr sweep --no-dry-run
To test the waters first, the console alone:
# console only — this is NOT a registry, pair it with one above $ docker run --rm -p 8080:8080 -p 9300:9300 ghcr.io/noroutine/kpr:latest
ghcr.io/noroutine/kpr — multiplatform images
docs/ — architecture, proofs, dry-run