はじめに
- GitLab Community Editionで、自身でGitLabサーバーを立てて、GitLab Container Registryを利用している。
- 容量がひっ迫してきたので、GitLab Container Registryの容量削減を目的とする。
- 以下の方法を参考にしたが、導入が上手くいかなかかったので主に導入部分を記載する。
動作確認した環境
- GitLab CE (15.8.3)
- Docker上で動作確認実施
方法
上記の記事のように、
- gitlab-ctl registry-garbage-collectでは上手いかなかった(容量削減できなかった)。
- docker-distribution-prunerを使うと容量削減できた。
docker-distribution-prunerの手順を以下に示す。
手順
-
(Dockerで構築している場合のみ)GitLab CEコンテナにアタッチ
-
docker-distribution-prunerがインストールされているか確認
下記コマンドを実行して確認する(GitLab CEだと、docker-distribution-prunerは含まれている)。whereis docker-distribution-pruner
下記のようになればOK。
docker-distribution-pruner: /opt/gitlab/embedded/bin/docker-distribution-pruner
-
削減できる容量の確認
EXPERIMENTAL=true docker-distribution-pruner -config=/var/opt/gitlab/registry/config.yml -delete-old-tag-versions=true -soft-errors
- オプション
- -delete-old-tag-versions=true
- 古いタグを消すかどうかのオプション (デフォルト値: true)
- latestなど同じタグ名を使ってDockerイメージを多く作成している場合に、削減量が大きくなる
- 公式ドキュメントではtrueを推奨 (削減量が大きくなる)
https://gitlab.com/gitlab-org/docker-distribution-pruner/-/blob/master/README.md#options
- 古いタグを消すかどうかのオプション (デフォルト値: true)
- -delete-old-tag-versions=true
下記のような結果が出ることを確認する。
WARN[XXXX] DELETEABLE INFO: XXXX links, XXXX blobs, 0 other, XX GB
- オプション
-
削除コマンドを実行 (実際にはdocker-backupフォルダに一旦、削除結果がバックアップされる)
上記3.のコマンドに、-delete
をつける。EXPERIMENTAL=true docker-distribution-pruner -config=/var/opt/gitlab/registry/config.yml -delete-old-tag-versions=true -soft-errors -delete
/var/opt/gitlab/gitlab-rails/shared/registry/docker-backup
フォルダにバックアップファイルとして保存されることを確認する。 -
完全削除
バックアップフォルダごと削除する。cd /var/opt/gitlab/gitlab-rails/shared/registry rm -rf docker-backup
まとめ
GitLab CEに付属している「docker-distribution-pruner」を使って、GitLab Container Registryの容量を削減できた。