Ihre Docker-Registry-Instanz automatisch bereinigen
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!
wget -qO- https://techoverflow.net/scripts/install-registry-autocleanup.sh | sudo bashBrauchen 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 /etc/docker/registry/config.yml -mSie können einen systemd-Dienst wie
[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-registryund einen Timer wie
[Unit]
Description=registry-gc
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.targetverwenden, 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
sudo systemctl enable registry-gc.timerund Sie können ihn jederzeit manuell ausführen mit
sudo systemctl start registry-gc.service