Ihre Docker-Registry-Instanz automatisch bereinigen

English Deutsch

Schnellinstallation

Dieses Schnellinstallations-Skript funktioniert, wenn Sie das Docker-Registry-Image mit docker-compose ausführen und der service in docker-compose.yml registry heißt. Ich empfehle, unser Beispiel zur Installation der Docker-Registry für GitLab zu verwenden (noch nicht verfügbar).

Führen Sie dies im Verzeichnis aus, in dem sich docker-compose.yml befindet!

install-registry-autocleanup.sh
wget -qO- https://techoverflow.net/scripts/install-registry-autocleanup.sh | sudo bash

Brauchen Sie eine Erklärung (oder verwenden Sie kein docker-compose)?

Docker-Registry-Instanzen speichern jede Version jedes Images, das Sie pushen. Besonders wenn Sie sich in einer Continuous-Integration-Umgebung befinden, möchten Sie möglicherweise regelmäßige Bereinigungen durchführen, die alle Images ohne Tag löschen.

Der Befehl dazu ist

registry-garbage-collect.sh
registry garbage-collect /etc/docker/registry/config.yml -m

Sie können einen systemd-Dienst wie

registry-gc.service
[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

und einen Timer wie

registry-gc.timer
[Unit]
Description=registry-gc

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

verwenden, um den Befehl täglich auszuführen. Sie müssen sowohl das WorkingDirectory als auch den genauen docker-compose exec-Befehl an Ihre Bedürfnisse anpassen.

Kopieren Sie beide Dateien nach /etc/systemd/system und aktivieren Sie den Timer mit

enable-registry-gc.sh
sudo systemctl enable registry-gc.timer

und Sie können ihn jederzeit manuell ausführen mit

start-registry-gc.sh
sudo systemctl start registry-gc.service

Check out similar posts by category: Docker