Small bash script to do repetitive things with docker registry > 2.1 ( I think, whichever version supports delete by manifest)
Usage:
./docker_reg_tool REGISTRY_BASE_URL ACTION [OPTIONS..]
Actions:
- list list repos
- list REPO list tags for repo
- delete REPO TAG delete tag for repo
Example:
List all repos
/$ ./docker_reg_tool https://registry.my.domain list
List tags for one repo
/$ ./docker_reg_tool https://registry.my.domain list some-repo
Delete tag for a repo
/$ ./docker_reg_tool https://registry.my.domain delete some-repo some-tag
If you want something more fully featured then check out crane.
If your config.json location is not ~/.docker/config.json, you can define the location with the DOCKER_CONFIG environment variable.
DOCKER_CONFIG="/your/path/to/docker/config.json" ./docker_reg_tool ...
...are sniffed out of ~/.docker/config.json. So you need to do docker login...
before you can use this tool.
They can also be set with the BASIC_AUTH
environment variable.
BASIC_AUTH=user:pass ./docker_reg_tool ...
Only been tested on Basic auth.
Set the INSECURE_REGISTRY
to true;
INSECURE_REGISTRY=true ./docker_reg_tool ...
In order for this to work, the registry needs to be running with If docker image:
REGISTRY_STORAGE_DELETE_ENABLED="true"
Or in the config file:
storage:
delete:
enabled: true
Also, the size will not decrease until the garbage collector runs. You can trigger it manually with:
docker exec registry /bin/registry garbage-collect -m=true /etc/docker/registry/config.yml
Set the TRACE
environment variable to true to turn on set -x
TRACE=true ./docker_reg_tool ...