Caduc watch changes on the docker engine to schedule unused image removal. A gracetime is observed between the removal of a container and removal of the image
As simple as running:
docker run --rm -ti -v /var/run/docker.sock:/var/run/docker.sock tjamet/caduc
Optionnally, you can provide a configuration file:
docker run --rm -ti -v /var/run/docker.sock:/var/run/docker.sock -v $HOME/.caduc:/var/run/caduc:ro tjamet/caduc --config-file /var/run/caduc/config.yml
Install the tool by launching python setup.py install
as root or python setup.py install --user
If you do not have root acces or do not want to bother your co-workers on the same host
Setup your environment so that docker ps
returns the list of running containers
To delete images one hour after removal of the last container running them, simply run caduc --image-gracetime="1h"
.
The default gracetime is of 1 day.
You can customize image grace time, the delay between last container/children layer using the image is deleted
and the actual image removal. This customization can be done per image, matching their tagged name.
To do so, create ~/.caduc
directory with a config.yml
file inside it. The matching will be done
by python's fnmatch function.
This config file should look like:
- images:
- <match>:
- grace_time: <some_delay>
To keep base images stored on your local registry (my.repo.local) 2 days and never delete images pulled from tjamet on dockerhub, create a config.yml file like this. The delay should be a string matching pytimeparse.