Skip to main content

Keeps Docker resources in shape based on rules and usage

Project description

Docker Shaper

This is a spin-off package for the docker-shaper tool, which can be used to monitor Docker stuff like containers, images and volumes and automatically enforce certain cleanup-rules.

Installation

[<PYTHON> -m] pip[3] install [--user] [--upgrade] docker-shaper

Usage

docker-shaper serve`

=> Navigate to e.g. http://my-build-node:5432/

Development & Contribution

Prerequisites

  • Python 3.8.10+ (e.g. via pyenv)
  • poetry and pre-commit python3 -m pip install --upgrade --user poetry pre-commit
git clone https://github.com/Checkmk/checkmk-dev-tools
cd checkmk-dev-tools/additional_packages/docker_shaper
pre-commit install
# if you need a specific version of Python inside your dev environment
poetry env use ~/.pyenv/versions/3.8.10/bin/python3
poetry install

Workflow

  • (once and only for publishing to PyPi) Get token on PyPi.org
  • (maybe) setup distinct repository setup poetry config repositories.checkmk https://upload.pypi.org/legacy/
  • (once and only for publishing to PyPi) poetry config pypi-token.checkmk pypi-<LONG-STRING> (will write to ~/.config/pypoetry/auth.toml)
  • modify and check commits via pre-commit
  • after work is done locally:
    • adapt version in pyproject.toml
    • build and check a package
poetry build && \
twine check dist/* &&
python3 -m pip uninstall -y checkmk_dev_tools && \
python3 -m pip install --user dist/checkmk_dev_tools-$(grep -E "^version.?=" pyproject.toml | cut -d '"' -f 2)-py3-none-any.whl
  • check installed package
  • go through review process
  • publish the new package poetry publish --build --repository checkmk
  • commit new version && push

Todo

  • Fix: stuck auto-reload: was: postpone=True + monitoring log

  • Fix: crawl-images should fix parents not having them listed

  • [-] Fix: stuck crawl images (too many async requests, does not happen in production)

  • Fix: '677aff0727' could not be removed: DockerError(404, 'No such image: 677aff0727:latest')

  • Fix: tried to remove container 4f5fb0848c unknown to us

  • Fix: Crashes (see runlog)

  • Image update message only if needed

  • New TUI

    • make ongoing progress visible
  • review log levels (too verbose)

  • answer https://stackoverflow.com/questions/32723111

  • installable via pip install

  • Quart interface (instead of flask)

  • auto-apply changes to source and configuration files

  • outsourced config file

  • bring in features of former dgcd

  • bring in features of former dockermon

  • untag certain tags

  • container cleanup

  • Fix none image lookup

  • Exceptions to messages

  • Clip

  • Increase/decrease logging via web / signal

  • Link: cleanup (images/containers) now

  • Add volumes list (with recent owners)

  • Containers: Store CPU / Memory usage over time

  • Containers: store history

  • Persist messages

  • Remove old message/container logs

  • Show different color for unmatched images

  • Warn about use of unpinned / upstream images

  • Handle 'build cache objects' (found on system prune)

  • Bring in volume monitoring: which volumes have been created and used by which containers?

  • Containers: show total CPU usage

  • Containers: list volumes

  • Images: list parents / children

  • Volumes: list usage

  • Instructions to readme

  • List unmatched / overmatched tags

  • Links to delete / remove

  • Links to jobs

  • Link: inspect

  • Graph: cpu / containers (idle/up)

  • Authenticate (at least if we can modify behavior, like stopping/removing images/containers)

Knowledge

(just misc links to articles that helped me out)

Logging

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

docker_shaper-2.0.3.tar.gz (32.4 kB view details)

Uploaded Source

Built Distribution

docker_shaper-2.0.3-py3-none-any.whl (34.8 kB view details)

Uploaded Python 3

File details

Details for the file docker_shaper-2.0.3.tar.gz.

File metadata

  • Download URL: docker_shaper-2.0.3.tar.gz
  • Upload date:
  • Size: 32.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.1 Linux/5.15.0-112-generic

File hashes

Hashes for docker_shaper-2.0.3.tar.gz
Algorithm Hash digest
SHA256 868acc00257c0d22cf3ad71fd3169ac17c15f78dcba7e8616a87390bb6424906
MD5 ced30fa999121711281f6ac6bb95ea8a
BLAKE2b-256 587f792fa04fcf29ebe486babb21d0fe6e6d8885409e5a270dada605e38dad0e

See more details on using hashes here.

File details

Details for the file docker_shaper-2.0.3-py3-none-any.whl.

File metadata

  • Download URL: docker_shaper-2.0.3-py3-none-any.whl
  • Upload date:
  • Size: 34.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.1 Linux/5.15.0-112-generic

File hashes

Hashes for docker_shaper-2.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3c0b31e949ad677097a2882764cadbb5c0ec0af9dd90548362b525d78026f9ab
MD5 17884f2d3e0fc2148e6fe8908d8652d2
BLAKE2b-256 f76d40ef5c16a12e960e64fd18a996d8329f578141fd43dbc29ff15e72c3093e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page