How to automatically remove docker images that are not associated to a container daily

Note: This will not only remove docker images without a tag but all docker images not associated to a running or stopped container. See our previous post¬†How to automatically cleanup (prune) docker images daily in case this is not the desired behaviour. docker image prune provides an easy way to remove “unused” docker images from a system and hence fixes or significantly delays docker eating up all your disk space on e.g. automated disk space.

I created a systemd-timer based daily image removal routine using TechOverflow’s Simple systemd timer generator.

Quick install using

wget -qO- | sudo bash

This is the script which automatically creates & installs both systemd config files.

# This script installs automated docker cleanup.
# onto systemd-based systems.
# See
# for details on what images are removed.
# It requires that docker is installed properly

cat >/etc/systemd/system/PruneDockerAll.service <<EOF

ExecStart=/bin/bash -c "docker image ls --format '{{.ID}}' | xargs docker image rm ; true"

cat >/etc/systemd/system/PruneDockerAll.timer <<EOF



# Enable and start service
systemctl enable PruneDockerAll.timer && sudo systemctl start PruneDockerAll.timer


To view the logs, use

journalctl -xfu PruneDockerAll.service

To view the status, use

sudo systemctl status PruneDockerAll.timer

To immediately cleanup your docker images, use

sudo systemctl start PruneDockerAll.service