docker - check image size and see what takes space
There are three useful tools to check the Docker image size and see what takes space:
docker image ls
- show images and sizesdocker image history image:tag
- show image layers and size for each layer- dive - a tool to inspect the image and see what each layer adds to the image
Check the image size with docker image ls
:
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
backend-ecs test-master 1b433074c182 59 minutes ago 2.03GB
backend-ecs latest 9095c4327d14 2 hours ago 2.03GB
backend-ecs test 9095c4327d14 2 hours ago 2.03GB
main-frontend latest 9a79643379d9 3 months ago 1.21GB
main-backend latest 2817d422e2c2 3 months ago 1.33GB
postgres 13 b9c0a694b781 3 months ago 374MB
redis 6.2.7-alpine fd45e5a11a9d 6 months ago 27.1MB
postgres 14.2 9dbc24674f25 13 months ago 376MB
mailhog/mailhog latest 4de68494cd0d 2 years ago 392MB
postgres 11.2 3eda284d1840 4 years ago 312MB
View image layers with docker image history
:
$ docker image history backend-ecs:test
IMAGE CREATED CREATED BY SIZE COMMENT
9095c4327d14 2 hours ago COPY /backend . # buildkit 8.51MB buildkit.dockerfile.v0
<missing> 2 hours ago RUN /bin/sh -c pip install --no-cache-dir -r… 505MB buildkit.dockerfile.v0
<missing> 2 hours ago COPY backend/requirements.txt ./ # buildkit 5.06kB buildkit.dockerfile.v0
<missing> 2 hours ago RUN /bin/sh -c pip install virtualenv # buil… 15.6MB buildkit.dockerfile.v0
<missing> 2 hours ago RUN /bin/sh -c apt-get update -y && apt-get … 499MB buildkit.dockerfile.v0
<missing> 2 hours ago WORKDIR /backend 0B buildkit.dockerfile.v0
<missing> 6 days ago CMD ["python3"] 0B buildkit.dockerfile.v0
<missing> 6 days ago RUN /bin/sh -c set -eux; wget -O get-pip.p… 9.9MB buildkit.dockerfile.v0
<missing> 6 days ago ENV PYTHON_GET_PIP_SHA256=96461deced5c2a487d… 0B buildkit.dockerfile.v0
<missing> 6 days ago ENV PYTHON_GET_PIP_URL=https://github.com/py… 0B buildkit.dockerfile.v0
<missing> 6 days ago ENV PYTHON_SETUPTOOLS_VERSION=57.5.0 0B buildkit.dockerfile.v0
<missing> 6 days ago ENV PYTHON_PIP_VERSION=23.0.1 0B buildkit.dockerfile.v0
<missing> 6 days ago RUN /bin/sh -c set -eux; for src in idle3 p… 32B buildkit.dockerfile.v0
<missing> 6 days ago RUN /bin/sh -c set -eux; wget -O python.ta… 40.2MB buildkit.dockerfile.v0
<missing> 6 days ago ENV PYTHON_VERSION=3.8.17 0B buildkit.dockerfile.v0
<missing> 6 days ago ENV GPG_KEY=E3FF2839C048B25C084DEBE9B26995E3… 0B buildkit.dockerfile.v0
<missing> 6 days ago RUN /bin/sh -c set -eux; apt-get update; a… 18.6MB buildkit.dockerfile.v0
<missing> 6 days ago ENV LANG=C.UTF-8 0B buildkit.dockerfile.v0
<missing> 6 days ago ENV PATH=/usr/local/bin:/usr/local/sbin:/usr… 0B buildkit.dockerfile.v0
<missing> 6 days ago /bin/sh -c set -ex; apt-get update; apt-ge… 587MB
<missing> 6 days ago /bin/sh -c apt-get update && apt-get install… 177MB
<missing> 6 days ago /bin/sh -c set -eux; apt-get update; apt-g… 48.4MB
<missing> 6 days ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 6 days ago /bin/sh -c #(nop) ADD file:98cacc5890a8c0b29… 116MB
Explore the image with dive:
$ dive mailhog/mailhog
The left side is the list of layers, the right side is the current content of the image.
Switch from left to side with Tab
.
Moving down in the list of layers on the left updates the tree on the right, so we can see what exactly each layer added to the image.
close