2017-07-14 155 views
0

我的CI將圖像推送到碼頭註冊表下的一個標記下。我有一個腳本定期清理舊的未用戶映像。它只是遍歷標籤內的摘要並在註冊表API上調用DELETE(遍歷註冊表文件系統上的文件)。Docker註冊表 - 從文件系統中刪除清單

dir="${REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY}/docker/registry/v2/repositories/test/_manifests/tags/5.3/index/sha256/" 
oldManifests=$(ls -t $dir | tail -n +2 ; done) 
for hash in $oldManifests 
do 
    curl -L -X DELETE http://localhost:5000/v2/test/manifests/sha256:$hash 
done 

/bin/registry garbage-collect /etc/docker/registry/config.yml 

後/垃圾收集所有的斑點被刪除,但不是在_manifests /標籤/ 5.3 /索引/ SHA256目錄。爲什麼?手動刪除它是否安全?

回答

0

是的,手動刪除它們是安全的。


在你的情況下,標記版本,它不會傷害到使用ls -t。在「最新」標籤的情況下,最好檢查.../_manifests/tags/5.3/current/link的內容(剝去sha256:的前綴)並繼續,因爲在降級先前推送的圖像時,您可能會推送較舊的清單作爲新的「最新」清單。

我有一個腳本來清除標記(你的情況)或標記從註冊表圖片: https://github.com/ricardobranco777/clean_registry.sh

,因爲它缺乏支持刪除標籤我不使用的API。

+0

我在Docker Hub中創建了一個Python腳本和一個Docker鏡像:https://github.com/ricardobranco777/clean_registry –