docker-image-size-limit
Limit your docker image size with a simple CLI command.
Perfect to be used inside your CI process.
Read the announcing post.
Installation
pip install docker-image-size-limit
Or use our Github Action or pre-built docker image.
Usage
We support just a single command:
$ disl your-image-name:label 300MiB
your-image-name:label exceeds 300MiB limit by 114.4 MiB
Add --max-layers flag to also lint the maximum amount of layers possible
in your image:
# If your image has 7 layers:
$ disl your-image-name:label 300MiB --max-layers=5
your-image-name:label exceeds 5 maximum layers by 2
# If your image has 5 layers:
$ disl your-image-name:label 300MiB --max-layers=5
# ok!
Add --current-size flag to show the current size your image:
$ disl your-image-name:label 300MiB --current-size
your-image-name:label size is 414.4 MiB
your-image-name:label exceeds 300MiB limit by 114.4 MiB
Add --exit-zero flag to force the exit code to be 0 even if there are errors:
$ disl your-image-name:label 300MiB --exit-zero
your-image-name:label exceeds 300MiB limit by 114.4 MiB
$ echo $?
0
You can combine all flags together:
$ disl your-image-name:label 300MiB --max-layers=5 --current-size --exit-zero
your-image-name:label size is 414.4 MiB
your-image-name:label exceeds 300MiB limit by 114.4 MiB
your-image-name:label exceeds 5 maximum layers by 2
Run disl as a module:
$ python -m docker_image_size_limit your-image-name:label 300MiB
your-image-name:label exceeds 300MiB limit by 114.4 MiB
Options
You can specify your image as:
- Image name:
python - Image name with tag:
python:3.6.6-alpine
You can specify your size as:
- Raw number of bytes:
1024 - Human-readable megabytes:
30 MBor30 MiB - Human-readable gigabytes:
1 GBor1 GiB - Any other size supported by
humanfriendly
Programmatic usage
You can also import and use this library as python code:
from docker import from_env
from docker_image_size_limit import check_image_size
oversize = check_image_size(from_env(), 'image-name:latest', '1 GiB')
assert oversize < 0, 'Too big image!' # negative oversize - is a good thing!
We also ship PEP-561 compatible type annotations with this library.
GitHub Action
You can also use this check as a GitHub Action:
- uses: wemake-services/docker-image-size-limit@master
with:
image: "$YOUR_IMAGE_NAME"
size: "$YOUR_SIZE_LIMIT"
# optional fields:
max_layers: 5
show_current_size: false
exit_zero: false
Here's an example.
Docker Image
We have a pre-built image available.
First, pull our pre-built docker image:
docker pull wemakeservices/docker-image-size-limit
Then you can use it like so:
docker run -v /var/run/docker.sock:/var/run/docker.sock --rm \
-e INPUT_IMAGE="$YOUR_IMAGE_NAME" \
-e INPUT_SIZE="$YOUR_SIZE_LIMIT" \
-e INPUT_MAX_LAYERS="$YOUR_MAX_LAYERS" \
-e INPUT_SHOW_CURRENT_SIZE="true" \
-e INPUT_EXIT_ZERO="true" \
wemakeservices/docker-image-size-limit
Should I use it?
You can use this script instead:
LIMIT=1024 # adjust at your will
IMAGE='your-image-name:latest'
SIZE="$(docker image inspect "$IMAGE" --format='{{.Size}}')"
test "$SIZE" -gt "$LIMIT" && echo 'Limit exceeded'; exit 1 || echo 'Ok!'
But I prefer to reuse tools over
custom bash scripts here and there.
License
MIT.
Metadata
Release files for docker-image-size-limit 2.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| docker_image_size_limit-2.2.0.tar.gz | 6.0 kB | Without provenance | Details for docker_image_size_limit-2.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| docker_image_size_limit-2.2.0-py3-none-any.whl | Python 3 | none | any | Details for docker_image_size_limit-2.2.0-py3-none-any.whl |
Total release size: 12.7 kB
Release files / docker_image_size_limit-2.2.0.tar.gz
| Download URL | docker_image_size_limit-2.2.0.tar.gz |
|---|---|
| Size | 6.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f583a03b1c561b4424b02f92c68a4035bbe50b8c5f0e59ae2c559db1cf854edd
|
|
BLAKE2b-256 checksum How to use checksums |
a74d1f10277d3cb97d446955ea864fc93167df468ea7f7879044baf9f689b5f7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.4 CPython/3.11.9 Darwin/23.5.0
|
Release files / docker_image_size_limit-2.2.0-py3-none-any.whl
| Download URL | docker_image_size_limit-2.2.0-py3-none-any.whl |
|---|---|
| Size | 6.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ba7929035f4f781667263645c34f4b7965e2900a084335dacca151ca83dc9fe8
|
|
BLAKE2b-256 checksum How to use checksums |
d5f71e6f1e2bf7ee2358a0bd1f302ce6c68626ae743ba4b9e3bb513872c90330
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.4 CPython/3.11.9 Darwin/23.5.0
|
Security for docker-image-size-limit 2.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.