Sinds enkele maanden gebruik ik GitLab. Ik heb het als Docker-container geïnstalleerd en houd het goed bij. Via de CI/CD-processen maak ik containerimages die GitLab via het geïntegreerde register verwerkt. Inmiddels neemt dit ongeveer 80 GB ruimte in beslag, terwijl de nieuwe images juist veel minder ruimte zouden moeten innemen. Hoe kom ik van images af die ik niet meer nodig heb?
Met de opruimfunctie van GitLab zelf, die je in zo’n geval in de GitLab-container zou kunnen uitvoeren als gitlab-ctl registry-garbagecollect, werkt dat naar onze ervaring niet. Een officiële tool voor het opruimen van overtollige dingen in een GitLab-register bestaat er op dit moment niet. Wat bij ons echter wel werkte, was dockerdistribution-pruner, een opruimhulp die op GitLab werd gehost.
Het uitvoerbare bestand van het programma, dat in Go is geschreven, zit ietwat verstopt: als je de projectpagina opent, klik je in de zijbalk van GitLab op CI/CD en dan rechtsboven aan het eind van de regel op het pictogram van een wolk met een pijl (‘Download compile artifacts’). Het zip-bestand dat je dan downloadt bevat het uitvoerbare Go-programma voor amd64.
Kopieer het programma naar je GitLab-container (met docker cp) en voer het daar uit met de volgende regel:
docker-distribution-pruner -config= /var/opt/gitlab/registry/config.yml
Het pad geldt voor standaard Docker-GitLab installaties (via Omnibus). Je hoeft niet bang te zijn iets kwijt te raken, het commando verwijdert in eerste instantie niets. Je start er alleen een inventarisatie van je register mee, die enkele minuten kan duren.
Daarna laat het programma weten hoeveel ruimte het in principe kan opruimen. Als je het opnieuw start met de optie -delete, dan worden de overbodige bestanden in je GitHub-register verwijderd. Standaard worden die dan naar de back-upmap docker_backup verplaatst in /var/opt/gitlab/gitlab-rails/shared/registry/.
Ten slotte nog dit: de makers van het programma waarschuwen ervoor om het te gebruiken. Wij hebben er echter goede ervaringen mee opgedaan. Gebruik op eigen risico.