1. 程式人生 > >Docker Registry 私有映象倉庫批量清理映象

Docker Registry 私有映象倉庫批量清理映象

Docker 私有映象倉庫批量清理映象

前言

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

環境

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。