harbor倉庫中鏡像按tag清理,刪除tag后需要清理gc才能釋放空間
#!/bin/bash set -e HARBOR_URL=127.0.0.1 HARBOR_PASSWD=harbor123 OLD_VERSION_NUM=50 function get_repos_list(){ repos_list=$(curl -s -k -u admin:${HARBOR_PASSWD} http://${HARBOR_URL}/api/projects?page=1&page_size=50) mkdir -p $PWD/reposList echo "${repos_list}" | jq '.[]' | jq -r '.project_id' > $PWD/reposList/reposList.txt } function get_images_list(){ mkdir -p $PWD/imagesList for repo in $(cat $PWD/reposList/reposList.txt);do images_list=$(curl -s -k -u admin:${HARBOR_PASSWD} http://${HARBOR_URL}/api/repositories?project_id=${repo}) echo "${images_list}" | jq '.[]' | jq -r '.name' > $PWD/imagesList/${repo}.txt done } function delete_images(){ #### get html htmlinfo=$(curl -s -k -u admin:${HARBOR_PASSWD} http://${HARBOR_URL}/api/repositories/$1/tags) #### images num num=$(echo "${htmlinfo}" | jq "length - ${OLD_VERSION_NUM}") if [[ "${num}" -le "0" ]]; then echo "$1 has no need of cleanup!!!" return fi #### get images_tag for index in $(seq 0 ${num}); do tag=$(echo "${htmlinfo}" | jq ".[${index}]" | jq -r '.name') echo "images=$1 ************************** tag= ${tag}" curl -s -k -u admin:${HARBOR_PASSWD} -X DELETE http://${HARBOR_URL}/api/repositories/$1/tags/${tag} done } function clean_registry(){ image_name=$(docker ps | grep registry | grep photon | awk -F " " '{print $2}') docker run -it --name gc --rm --volumes-from registry ${image_name} garbage-collect /etc/registry/config.yml } function entrance(){ get_repos_list get_images_list for repo in $(cat $PWD/reposList/reposList.txt);do for images in $(cat $PWD/imagesList/${repo}.txt); do delete_images ${images} done done clean_registry } entrance
- 參考: https://blog.csdn.net/u014305062/article/details/92770753