Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tjamet/caduc

Event based Continuous Docker Cleaner
https://github.com/tjamet/caduc

Last synced: about 1 month ago
JSON representation

Event based Continuous Docker Cleaner

Awesome Lists containing this project

README

        

CaDuC
=================================
.. image:: https://travis-ci.org/tjamet/caduc.svg?branch=master
:target: https://travis-ci.org/tjamet/caduc
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

How To
======

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/.caduc:/var/run/caduc:ro tjamet/caduc --config-file /var/run/caduc/config.yml``

Install
-------

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

Use
---

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.

Customize
---------

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:
:
grace_time:

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

images:
my.repo.local/base/*:
grace_time: 2d
tjamet/*:
grace_time: -1