一、harbor版本
[注釋:鏡像ID相同的不同版本鏡像tag,刪除時會同時刪除]
harbor-offline-installer-v1.5.0.tgz
二、獲取 nginx項目 及 項目下倉庫 信息
# curl -u "admin:12345" -X GET --header 'Accept: application/json' 'http://192.168.56.21/api/search?q=項目名'
[root@node ~]# curl -u "admin:Harbor12345" -X GET --header 'Accept: application/json' 'http://192.168.56.21/api/search?q=nginx' { "project": [ { "project_id": 2, "owner_id": 1, "name": "nginx", "creation_time": "2020-01-10T06:26:55Z", "update_time": "2020-01-10T06:26:55Z", "deleted": 0, "owner_name": "", "togglable": true, "current_user_role_id": 1, "repo_count": 1, "metadata": { "public": "false" } } ], "repository": [ { "project_id": 2, "project_name": "nginx", "project_public": false, "pull_count": 1, "repository_name": "nginx/nginx", "tags_count": 1 } ] }
三、獲取鏡像倉庫的 tags
# curl -u "admin:Harbor12345" -X GET --header 'Accept: application/json' 'http://192.168.56.21/api/repositories/項目名%2F鏡像名稱/tags'
[root@dev-nanan ~]# curl -u "admin:Harbor12345" -X GET --header 'Accept: application/json' 'http://192.168.56.21/api/repositories/nginx%2Fnginx/tags' [ { "digest": "sha256:e4f0474a75c510f40b37b6b7dc2516241ffa8bde5a442bde3d372c9519c84d90", "name": "v1.13.12", "size": 44613870, "architecture": "amd64", "os": "linux", "docker_version": "17.06.2-ce", "author": "", "created": "2018-04-30T13:55:45.019400581Z", "signature": null } ]
四、軟刪除鏡像倉庫中指定版本鏡像
【刪除web界面上的指定辦版本鏡像】
#curl -u "admin:Harbor12345" -X DELETE -H 'Accept: text/plain' "http://192.168.56.21/api/repositories/項目名/鏡像名稱/tags/鏡像版本號" [root@node ~]# curl -u "admin:Harbor12345" -X DELETE -H 'Accept: text/plain' "http://192.168.56.21/api/repositories/nginx/nginx/tags/v1.13.12"
五、硬刪除鏡像倉庫中指定版本鏡像
Harbor私有倉庫運行一段時間后,倉庫中存有大量鏡像,會占用太多的存儲空間。直接通過Harbor界面刪除相關鏡像,並不會自動刪除存儲中的文件和鏡像。需要停止Harbor服務,執行垃圾回收命令,進行存儲空間清理和回收。
#進入compose所在目錄[config.yml] [root@node ~]# cd /root/harbor #停止Harbor相關的compose服務 [root@node harbor]# docker-compose stop Stopping harbor-jobservice ... done Stopping nginx ... done Stopping harbor-ui ... done Stopping harbor-db ... done Stopping registry ... done Stopping harbor-adminserver ... done Stopping harbor-log ... done #使用--dry-run參數運行容器,預覽運行效果,但不刪除任何數據 [root@node harbor]# docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.2-photon garbage-collect --dry-run /etc/registry/config.yml nginx/nginx 0 blobs marked, 5 blobs eligible for deletion【0個blobs被標記,5個blobs可刪除] blob eligible for deletion: sha256:3c091c23e29d0ddfc902b0be63b1a08a853ef39973f92fab39ad1727eac012bf blob eligible for deletion: sha256:4a99993b863683bef1c776732e14d2372f6ed52b48e94783f4a1b58af289db07 blob eligible for deletion: sha256:ae513a47849c895a155ddfb868d6ba247f60240ec8495482eca74c4a2c13a881 blob eligible for deletion: sha256:e4f0474a75c510f40b37b6b7dc2516241ffa8bde5a442bde3d372c9519c84d90 blob eligible for deletion: sha256:f2aa67a397c49232112953088506d02074a1fe577f65dc2052f158a3e5da52e8 #不使用--dry-run參數,將刪除相關的文件和鏡像 [root@node harbor]# docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.2-photon garbage-collect /etc/registry/config.yml nginx/nginx 0 blobs marked, 5 blobs eligible for deletion#【0個blobs被標記,5個blobs可刪除] blob eligible for deletion: sha256:3c091c23e29d0ddfc902b0be63b1a08a853ef39973f92fab39ad1727eac012bf INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/3c/3c091c23e29d0ddfc902b0be63b1a08a853ef39973f92fab39ad1727eac012bf go.version=go1.7.3 instance.id=8a97e002-522a-4a6c-b390-122880d53183 service=registry blob eligible for deletion: sha256:4a99993b863683bef1c776732e14d2372f6ed52b48e94783f4a1b58af289db07 INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/4a/4a99993b863683bef1c776732e14d2372f6ed52b48e94783f4a1b58af289db07 go.version=go1.7.3 instance.id=8a97e002-522a-4a6c-b390-122880d53183 service=registry blob eligible for deletion: sha256:ae513a47849c895a155ddfb868d6ba247f60240ec8495482eca74c4a2c13a881 INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/ae/ae513a47849c895a155ddfb868d6ba247f60240ec8495482eca74c4a2c13a881 go.version=go1.7.3 instance.id=8a97e002-522a-4a6c-b390-122880d53183 service=registry blob eligible for deletion: sha256:e4f0474a75c510f40b37b6b7dc2516241ffa8bde5a442bde3d372c9519c84d90 INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/e4/e4f0474a75c510f40b37b6b7dc2516241ffa8bde5a442bde3d372c9519c84d90 go.version=go1.7.3 instance.id=8a97e002-522a-4a6c-b390-122880d53183 service=registry blob eligible for deletion: sha256:f2aa67a397c49232112953088506d02074a1fe577f65dc2052f158a3e5da52e8 INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/f2/f2aa67a397c49232112953088506d02074a1fe577f65dc2052f158a3e5da52e8 go.version=go1.7.3 instance.id=8a97e002-522a-4a6c-b390-122880d53183 service=registry [root@node harbor]# docker-compose start Starting log ... done Starting adminserver ... done Starting registry ... done Starting ui ... done Starting mysql ... done Starting jobservice ... done Starting proxy ... done
六、刪除鏡像倉庫tag腳本
【每個項目保留9個版本鏡像,可在下面腳本配置,打 tag 的時候可以按照日期命名,例如:2018-10-29_17-39 】
#!/bin/bash URL="http://192.168.56.21" USER="admin" PASS="Harbor12345" PRO="nginx" HARBOR_PAHT="/root/harbor" SAVE_IAMGE_NUM=9 # 軟刪除 harbor tags del_tags() { echo "軟刪除 ${rp}/${t}" curl -u ${USER}:${PASS} -X DELETE -H 'Accept: text/plain' "${URL}/api/repositories/${rp}/tags/${t}" } # 硬刪除 harbor tags har_del_tags() { cd ${HARBOR_PAHT} docker-compose stop docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.2-photon garbage-collect /etc/registry/config.yml docker-compose start } # 獲取 project id PID=$(curl -u ${USER}:${PASS} -s -X GET --header 'Accept: application/json' "${URL}/api/projects"|grep -w -B 2 "${PRO}" |grep "project_id"|awk -F '[:, ]' '{print $7}') #echo ${PID} # 拿獲取到的 projects_id 獲取 repositories[倉庫] REPOS=$(curl -u ${USER}:${PASS} -s -X GET --header 'Accept: application/json' "${URL}/api/repositories?project_id=${PID}"|grep "name"|awk -F '"' '{print $4}') for rp in ${REPOS} do echo ${rp} TAGS=$(curl -u ${USER}:${PASS} -s -X GET --header 'Accept: application/json' "${URL}/api/repositories/${rp}/tags"|grep \"name\"|awk -F '"' '{print $4}'|sort -r |awk "NR > $SAVE_IAMGE_NUM {print $1}") for t in ${TAGS} do echo ${t} del_tags done echo "====================" done har_del_tags