GitLab Garbage Collection

Die GitLab Container Registry kann eine beträchtliche Menge an Speicherplatz auf Ihrem GitLab-Server beanspruchen. Um den durch die Container Registry verbrauchten Speicherplatz effektiv freizugeben, enthält GitLab einen Garbage Collector. Mit dem Garbage Collector können nicht referenzierte Image Layer, als auch Manifeste ohne Tags vollautomatisch entfernt werden.



Garbage Collection manuell durchführen


Nicht referenzierte Ebenen entfernen

Image-Layer machen den größten Teil des Speicherplatzes in der Containerregistrierung aus. Ein Image gilt als nicht referenziert, wenn kein Image-Manifest auf sie verweist. Nicht referenzierte Layer sind das Standardziel des Garbage Collectors der Container-Registry.


sudo gitlab-ctl registry-garbage-collect


Entfernen von nicht gekennzeichneten Manifesten und nicht referenzierten Layern

Standardmäßig ignoriert der Garbage Collector der Containerregistrierung nicht gekennzeichnete Images. Um nicht gekennzeichnete Images per Garbage Collection zu entfernen, kann dem Befehl der Parameter -m hinzugefügt werden.


sudo gitlab-ctl registry-garbage-collect -m



Garbage Collection vollautomatisch per Cronjob einrichten


Um die Garbage Collection vollautomatisch per zeitgesteuerter Aufgabe durchführen zu lassen, können Sie einen entsprechender Cronjob für Ihren Systembenutzer auf Ihrem GitLab-Server hinterlegen.


Cronjob Editor öffnen

crontab -e


Cronjob zur vollautomatischen Garbage Collection anlegen

Mit folgendem Cronjob wird die Garbage Collection täglich um 0.00 Uhr durchgeführt.


Bitte ersetzen Sie im folgenden Befehl durch den entsprechenden Benutzernamen.


Da der Crontab Service über keine Bash Environments verfügt, muss im Cronjob der absolute Pfad zur Binary angeben werden /usr/bin/gitlab-ctl, anstelle von gitlab-ctl.


0 0 * * * sudo /usr/bin/gitlab-ctl registry-garbage-collect -m 2>&1 | /usr/bin/logger -t GITLAB


Logs überprüfen:

journalctl -f -t GITLAB