This tool repacks a Docker image into a smaller, more efficient version that makes it significantly faster to pull. It does this by using a few different techniques such as removing redundant data and improving compression ratios. Some examples of improvements:
Image | Before | After | Reduction |
---|---|---|---|
google/deepsomatic | 16.4GB, 2 minutes 14 seconds | 4.8GB, 16 seconds | 3.4x smaller, 8.2x faster |
google/deepvariant | 12.7GB, 1 minute, 2 seconds | 3GB, 10 seconds | 6.3x faster, 4.2x smaller |
google/cloud-sdk | 1.1GB, 5 seconds | 187MB, 1 second | 3.8x faster, 6.1x smaller |
mathworks/matlab | 2GB, 5 seconds | 230.7MB, 1 second | 6.5x faster, 9x smaller |
tensorflow/tensorflow | 3.5GB, 11 seconds | 2GB, 3 seconds | 3.3x faster, 1.8x smaller |
See the benchmarks page for a full comparison of pulling times across many different images.
$ docker-repack docker://alpine:latest oci://directory/ --target-size=50MB
Full arguments:
Usage: docker-repack [OPTIONS] --target-size <TARGET_SIZE> <SOURCE> <OUTPUT_DIR>
Arguments:
<SOURCE> Source image. e.g. `python:3.11`, `tensorflow/tensorflow:latest` or `oci://local/image/path`
<OUTPUT_DIR> Location to save image, e.g oci://directory/path/
Options:
-t, --target-size <TARGET_SIZE> Target size for layers
--concurrency <CONCURRENCY>
--keep-temp-files
--compression-level <COMPRESSION_LEVEL> [default: 14]
--platform <PLATFORM> [default: linux/*]
-h, --help Print help
-V, --version Print version
Download a release from the releases page
cargo install docker-repack