/docker-reg-tool

Docker registry cli tool, primarily for deleting images.

Primary LanguageShellMIT LicenseMIT

Docker Registry Tool

Small bash script to do repetitive things with docker registry > 2.1 ( I think, whichever version supports delete by manifest)

Dependencies

Jq

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.

Docker config file location

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 ...

Credentials

...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.

Insecure Registry

Set the INSECURE_REGISTRY to true;

INSECURE_REGISTRY=true ./docker_reg_tool ...

Registry Settings

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

Debugging

Set the TRACE environment variable to true to turn on set -x

TRACE=true ./docker_reg_tool ...

Docker Image

See https://hub.docker.com/r/byrnedo/reg-tool/