Docker Registry 私有鏡像倉庫批量清理鏡像

Docker 私有鏡像倉庫批量清理鏡像


前言

在頻繁長期使用鏡像倉庫後,由於鏡像倉庫清理鏡像比較費勁,業內也沒有一個比較好的清理方案,官方提供的鏡像倉庫清理也比較費勁,導致 Docker 鏡像倉庫越積越大,嚴重消耗磁盤空間。基於該現狀,推薦如下方案。

環境

鏡像倉庫管理使用:Harbor(https://github.com/vmware/harbor),目前業內基本上都是使用 Harbor 作爲鏡像倉庫管理。

Harbor 提供了 restful api,包括:刪除鏡像 tag、刪除 repositories,以及查找 repositories,tag 等 api。具體請查看官方文檔。



方案

鏡像命名規則

首先需要制定一個規範的鏡像命名規則,如:


這樣做的好處是能夠方便的做到批量刪除鏡像。比如想刪除 xxx/deploy/app/daily 下的鏡像,就比較方便。

使用 Harbor api

1、如果想刪除 xxx/deploy/app 下的所有鏡像。則只需要調用 harbor api
1)GET /api/repositories (該 api 有個 filter 參數,可以匹配 xxx/deploy/app/daily 下的所有 repositories
2)遍歷上一步拿到的 repositories, DELETE  /api/repositories/repoName
這樣就刪除了 xxx/deploy/app/daily 的所有鏡像

2、如果想刪除指定 tag,道理也一樣。可以通過 harbor 的 api 拿到 所有的 tag。

3、雖然調用 harbor 的 api 刪除了 ,但是實際上並沒有刪除,只是刪除了 Registry 的索引。實際文件並沒有刪除。
      最後還需要執行鏡像的垃圾回收: registry garbage-collect /etc/docker/registry/config.yml


總結

本文提供了一個批量清理鏡像倉庫的思路,使用 harbor api。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章