How to automatically cleanup your docker registry instance
Quick install
This quick-install script works if you are running the docker registry image using docker-compose
and the service
in docker-compose.yml
is called registry
. I recommend to use our example on how to install the docker registry for Gitlab (not yet available).
Run this in the directory where docker-compose.yml
is located!
wget -qO- https://techoverflow.net/scripts/install-registry-autocleanup.sh | sudo bash
Need an explanation (or not using docker-compose
)?
Docker registry instances will store every version of every image you push to them, so especially if you are in a continous integration environment you might want to do periodic cleanups that delete all images without a tag.
The command to do that is
registry garbage-collect /etc/docker/registry/config.yml -m
You can use a systemd
service like
[Unit]
Description=registry-gc
[Service]
Type=oneshot
ExecStart=/usr/local/bin/docker-compose exec -T registry bin/registry garbage-collect /etc/docker/registry/config.yml -m
WorkingDirectory=/opt/my-registry
and a timer like
[Unit]
Description=registry-gc
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
to run the command daily. You need to adjust both the WorkingDirectory
and the exact docker-compose exec
command to suit your needs.
Copy both files to /etc/systemd/system
and enable the timer using
sudo systemctl enable registry-gc.timer
and you can run it manually at any time using
sudo systemctl start registry-gc.service