Continuous Delayed Docker Cleanup
CDDC watched 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
Run in a container
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/.cddc:/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
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
fnmatch function <https://docs.python.org/2/library/fnmatch.html#fnmatch.fnmatch>_.
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
images: my.repo.local/base/*: grace_time: 2d tjamet/*: grace_time: -1