Go to file
Kyle Anderson cc0fdbbfd9
Merge pull request #52 from Yelp/fix-requirements
Bump urllib and requests
2019-04-29 14:43:24 -07:00
debian Bump version 2019-04-25 03:44:27 -07:00
docker_custodian Bump version 2019-04-25 03:44:27 -07:00
tests Fix error on missing labels 2019-04-24 07:46:23 -07:00
.dockerignore Add a container to run docker-custodian and install instructions to the README. 2015-08-08 18:11:22 -04:00
.gitignore Adding project files 2015-07-08 12:33:52 -07:00
.pre-commit-config.yaml Pre-commit wants to make these changes 2019-04-24 07:39:38 -07:00
.secrets.baseline Pre-commit wants to make these changes 2019-04-24 07:39:38 -07:00
.travis.yml Update travis config and python to newer versions 2018-03-05 09:21:00 -05:00
CHANGELOG.md Release 0.7.1 2018-03-21 15:26:44 -07:00
Dockerfile Update the readme to reflect that the official docker image. Fixes #16 2015-09-29 10:57:23 -07:00
LICENSE Adding project files 2015-07-08 12:33:52 -07:00
Makefile Add a container to run docker-custodian and install instructions to the README. 2015-08-08 18:11:22 -04:00
README.rst Add --exclude-container-label argument to dcgc 2018-03-20 16:33:13 -07:00
requirements.txt bump urllib and requests 2019-04-28 00:11:12 +02:00
setup.py Port from 'docker-py' library to renamed 'docker' library. 2018-03-06 09:56:19 -05:00
tox.ini Update travis config and python to newer versions 2018-03-05 09:21:00 -05:00

README.rst

Docker Custodian
================

.. image:: https://travis-ci.org/Yelp/docker-custodian.svg
    :target: https://travis-ci.org/Yelp/docker-custodian

Keep docker hosts tidy.


.. contents::
    :backlinks: none

Install
-------

There are three installation options

Container
~~~~~~~~~

.. code::

    docker pull yelp/docker-custodian
    docker run -ti \
        -v /var/run/docker.sock:/var/run/docker.sock \
        yelp/docker-custodian dcgc --help

Debian/Ubuntu package
~~~~~~~~~~~~~~~~~~~~~

First build the package (requires `dh-virtualenv`)

.. code:: sh

    dpkg-buildpackage -us -uc

Then install it

.. code:: sh

    dpkg -i ../docker-custodian_*.deb


Source
~~~~~~

.. code:: sh

    pip install git+https://github.com/Yelp/docker-custodian.git#egg=docker_custodian


dcgc
----

Remove old docker containers and docker images.

``dcgc`` will remove stopped containers and unused images that are older than
"max age".  Running containers, and images which are used by a container are
never removed.

Maximum age can be specificied with any format supported by
`pytimeparse <https://github.com/wroberts/pytimeparse>`_.

Example:

.. code:: sh

    dcgc --max-container-age 3days --max-image-age 30days


Prevent images from being removed
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

``dcgc`` supports an image exclude list. If you have images that you'd like
to keep around forever you can use the exclude list to prevent them from
being removed.

::

    --exclude-image
        Never remove images with this tag. May be specified more than once.

    --exclude-image-file
        Path to a file which contains a list of images to exclude, one
        image tag per line.

You also can use basic pattern matching to exclude images with generic tags.

.. code::

    user/repositoryA:*
    user/repositoryB:?.?
    user/repositoryC-*:tag


Prevent containers and associated images from being removed
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

``dcgc`` also supports a container exclude list based on labels.  If there are
stopped containers that you'd like to keep, then you can check the labels to
prevent them from being removed.

::

    --exclude-container-label
        Never remove containers that have the label key=value. =value can be
        omitted and in that case only the key is checked. May be specified
        more than once.

You also can use basic pattern matching to exclude generic labels.

.. code::

    foo*
    com.docker.compose.project=test*
    com.docker*=*bar*


dcstop
------

Stop containers that have been running for too long.

``dcstop`` will ``docker stop`` containers where the container name starts
with `--prefix` and it has been running for longer than `--max-run-time`.


Example:

.. code:: sh

    dcstop --max-run-time 2days --prefix "projectprefix_"