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 bashNeed 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 -mYou 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-registryand a timer like
[Unit]
Description=registry-gc
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.targetto 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.timerand you can run it manually at any time using
sudo systemctl start registry-gc.service