Our Docker builds in Jenkins are run with this command and options:
> docker build --rm=true -t <repo><image> --no-cache=true --pull=true --file=<dockerfile location>
So we’re specifying to not use the cache and remove intermediate containers. When running with these options we get a bunch of images with
<none>:<none> for repo and tag that are fairly large in size and can be found when running ‘docker images -a’.
When I switch the option to use cache it doesn’t create additional images as it’s using the existing ones…this all makes sense.
I’m noticing when we run with --no-cache=true and it adds more images that increases the Data Space and Metadata Space used.
Backing Filesystem: xfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 8.13 GB
Data Space Total: 107.4 GB
Data Space Available: 40.78 GB
Metadata Space Used: 11.14 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.136 GB
I’m also noticing when running with --no-cache=true that the Docker build output shows several entries like below where the intermediate container 328a077e40b7 gets deleted but not 2e40b8143997. I’m assuming this deletion is because of --rm=true.
Step 19 : RUN mkdir -p /var/log/mariadb/
—> Running in 328a077e40b7
Removing intermediate container 328a077e40b7
Why doesn’t the --rm=true parameters also delete the other images like 2e40b8143997? And what’s the diff between the intermediate container it deletes and the one it doesn’t?
Is our only longer term Docker build solution to save space to either stop building with --no-cache =true, or run a command to remove all images periodically (assuming we push them and don’t need them on that system anymore)?