Harbor: 如何刪除鏡像的磁盤空間問題。

我們知道,在harbor GUI界面上刪除docker image鏡像後,發現磁盤空間並沒有減少(linux上用 df -h就能發現)。那如何才能刪除這些東西呀?步驟如下:

1. 登錄harbor GUI 管理頁面,刪除那些docker 鏡像。

 軟刪除後,Harbour中不再管理存儲庫,但是存儲庫的文件仍然保留在Harbour的存儲中。

2. 修改  common/config/registry/config.yml文件

此文件在harbor安裝目錄下,關閉的目的是爲了禁止身份驗證

3. 修改 docker-compose.yml 文件

此文件在harbor安裝目錄下,修改此文件的目的是把registry port端口暴露出來,添加紅框出的配置,注意格式。

4. 重新配置harbor,使其配置生效

cd harbor的home目錄;執行

docker-compose down
docker-compose up -d 

5. 清理已刪除未使用的清單

docker run --network="host" -it -v /data/registry:/registry -e REGISTRY_URL=http://127.0.0.1:5000 mortensrasmussen/docker-registry-manifest-cleanup:1.1.2beta

這裏直接執行即可.

6、清理以刪除現在不再與清單關聯的blob

docker run -it --name gc --rm --volumes-from registry vmware/registry-photon:v2.6.2-v1.4.0 garbage-collect /etc/registry/config.yml

注意,這裏 vmware/registry-photon:v2.6.2-v1.4.0 得換成你自己的harbor版本,如何知道你自己的版本?用下面的命令即可。

docker images | grep registry-photon

7、把步驟2和步驟3的配置修改回初始狀態,並重啓harbor。

docker-compose down
docker-compose up -d 

 

爲啥要用上面的步驟? 原因如下:

Harbor刪除鏡像後且GC清理後,磁盤空間沒有釋放。因爲我們push大量相同標籤的鏡像,Docker 鏡像由標籤引用,並由唯一的摘要標識。這意味着如果myImage使用標記推送兩個圖像,在DR內部他們顯示的不同,它們將由兩個不同的digests標識。最後推送的Images是當前的。Docker 鏡像由layers組成,每個layers都關聯一個blob。該blob是最佔用存儲的文件; 這些文件將由GC清理。正由上面的描述每個鏡像都會存儲一個引用,因爲,我們重複提交10次,那一個標籤在DR中會有10個引用,標籤只能獲取tag。而其他9個只能用digest獲取了。

簡單的來說就是因爲相同的標籤的鏡像重複提交次數過多導致。

 

參考資料:

1.Harbor密碼重置 密碼修改 admin密碼重置

2. Harbor鏡像刪除空間回收

3. 刪除 harbor  images

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章