{ "info": { "author": "John Downs", "author_email": "john.downs@yodle.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Build Tools" ], "description": "**Docker Registry Cleaner Tools**\n\nAt [Yodle](http://www.yodle.com/), we started using Docker with a privately hosted [Docker Registry](https://github.com/docker/docker-registry). This was great until we discovered that the registry had no tools to cleanup old, unused images! Our disks began to fill up, so this was created to fill the gap.\n\nThis cleaner is designed to work with the v1 Registry provided by Docker. It has not been tested against the [Registry v2](https://github.com/docker/distribution), which may have different assumptions. We will gladly accept pull requests to add support for this (see Contributing below).\n\nThis tool is best used as a scheduled task, to periodicly remove cruft from your registry on disk. It is also advisible to untag old images as well. Tagged images are always referenced, so there may be cruft that this cleaner will not notice. Untagging as a feature will be included in this project as a plugin.\n\n# Installing\n\nTo use this cleaner, clone the repository and run `python cleaner` from the project root\n\nComing soon: `pip install docker-registry-cleaner`\n\n\n# Warning\n\nThis was developed against our docker repository. If your registry is different, it may cause problems. Please back up your registry and use scrub rather than purge until you are confident it works for your setup. In particular, this tool assumes you are storing your images directly on disk. It has not been designed to work with other storage drivers yet.\n\n# Usage\n\nIn order to authenticate against your registry, you need to set the following environment variables:\n\n`registry_username` and `registry_password`\n\n usage: cleaner [-h] [--hostname [HOSTNAME [HOSTNAME ...]]] [--path PATH]\n repository command\n\n positional arguments:\n repository the repository path\n command untag, validate, report, scrub, revert\n\n optional arguments:\n -h, --help show this help message and exit\n --hostname [HOSTNAME [HOSTNAME ...]]\n the registry hostname. Required for untag\n --path PATH path to tmp directory to restore\n\n\n\nYou may want to untag old images before purging\n\n ./dr_clean untag $REPOSITORY_HOME\n ./dr_clean purge $REPOSITORY_HOME\n\n\nIf you are using safe deletes, then you can also restore with\n\n ./dr_clean restore $REPOSITORY_HOME\n\nThis might be wise if you have frequent enough pushes. There is a race condition where an image may be pushed, but the reference is not written to disk yet, and it will be picked up for deletion. This won't happen if your $KEEP window is long enough though.\n\n# Contributing\n\nPull requests are welcome! All tests must pass and be pep8 compliant.\n\nTests are run by executing ```nosetests``` in the root of the project.\n\nStyle is checked by running ```pylint``` in the root of the project.\n\n# License\n\nApache 2 Licensed.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/yodle/Docker-Registry-Cleaner", "keywords": "docker docker-registry", "license": "Apache 2.0", "maintainer": null, "maintainer_email": null, "name": "docker-registry-cleaner", "package_url": "https://pypi.org/project/docker-registry-cleaner/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/docker-registry-cleaner/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/yodle/Docker-Registry-Cleaner" }, "release_url": "https://pypi.org/project/docker-registry-cleaner/0.1.0/", "requires_dist": null, "requires_python": null, "summary": "A tool to remove unused images from a Docker registry", "version": "0.1.0" }, "last_serial": 2710855, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "946a116d4ff1017768b21a584159de25", "sha256": "8cf605f33847f5bd1cb8fde5fc3416bc5b35dbce03b5c5d035994d872cb16f64" }, "downloads": -1, "filename": "docker_registry_cleaner-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "946a116d4ff1017768b21a584159de25", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9861, "upload_time": "2016-01-11T18:02:19", "url": "https://files.pythonhosted.org/packages/be/5b/ff32d9b8b156cc15cd73fd773b1d0c220ec21f87aa64a3c73f53293ad44d/docker_registry_cleaner-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "69b039bdeb18e522025e33e3a3147766", "sha256": "8aa34bb0c92791c28f474572a737adb8a06cbc9e57627adf46517bfa441ffeeb" }, "downloads": -1, "filename": "docker_registry_cleaner-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "69b039bdeb18e522025e33e3a3147766", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9855, "upload_time": "2016-01-11T18:02:28", "url": "https://files.pythonhosted.org/packages/44/41/4069ccc0d25559848c1ba8b5c74dc480e7422196e12b66a8522283f84624/docker_registry_cleaner-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a62ff109fcddf586c7ad51102caeb8c7", "sha256": "4ee02b8915f1f8a3b28776bfc8625aa84c9ede4a2c63d982d992c4f609b3a0bf" }, "downloads": -1, "filename": "docker-registry-cleaner-0.1.0.tar.gz", "has_sig": true, "md5_digest": "a62ff109fcddf586c7ad51102caeb8c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6079, "upload_time": "2016-01-11T18:02:09", "url": "https://files.pythonhosted.org/packages/54/a8/7277667d26f5f743dae65eb9f1f604b6e8cf04271a05286fed07cdb7ba65/docker-registry-cleaner-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "946a116d4ff1017768b21a584159de25", "sha256": "8cf605f33847f5bd1cb8fde5fc3416bc5b35dbce03b5c5d035994d872cb16f64" }, "downloads": -1, "filename": "docker_registry_cleaner-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "946a116d4ff1017768b21a584159de25", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9861, "upload_time": "2016-01-11T18:02:19", "url": "https://files.pythonhosted.org/packages/be/5b/ff32d9b8b156cc15cd73fd773b1d0c220ec21f87aa64a3c73f53293ad44d/docker_registry_cleaner-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "69b039bdeb18e522025e33e3a3147766", "sha256": "8aa34bb0c92791c28f474572a737adb8a06cbc9e57627adf46517bfa441ffeeb" }, "downloads": -1, "filename": "docker_registry_cleaner-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "69b039bdeb18e522025e33e3a3147766", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9855, "upload_time": "2016-01-11T18:02:28", "url": "https://files.pythonhosted.org/packages/44/41/4069ccc0d25559848c1ba8b5c74dc480e7422196e12b66a8522283f84624/docker_registry_cleaner-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a62ff109fcddf586c7ad51102caeb8c7", "sha256": "4ee02b8915f1f8a3b28776bfc8625aa84c9ede4a2c63d982d992c4f609b3a0bf" }, "downloads": -1, "filename": "docker-registry-cleaner-0.1.0.tar.gz", "has_sig": true, "md5_digest": "a62ff109fcddf586c7ad51102caeb8c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6079, "upload_time": "2016-01-11T18:02:09", "url": "https://files.pythonhosted.org/packages/54/a8/7277667d26f5f743dae65eb9f1f604b6e8cf04271a05286fed07cdb7ba65/docker-registry-cleaner-0.1.0.tar.gz" } ] }