harbor 的版本為 1.5.2
為 Harbor 配置 swagger
官網參考: https://github.com/goharbor/harbor/blob/v1.5.2/docs/configure_swagger.md
cd /iba/software/harbor
wget https://raw.githubusercontent.com/goharbor/harbor/master/docs/prepare-swagger.sh https://raw.githubusercontent.com/goharbor/harbor/master/docs/swagger.yaml
vi prepare-swagger.sh
#修改 SERVER_IP
SERVER_IP=192.168.0.241
chmod +x prepare-swagger.sh
./prepare-swagger.sh
vi docker-compose.yml
# 在 - /data/ca_download/:/etc/ui/ca/:z 后添加下面兩行
- ../src/ui/static/vendors/swagger-ui-2.1.4/dist:/harbor/static/vendors/swagger
- ../src/ui/static/resources/yaml/swagger.yaml:/harbor/static/resources/yaml/swagger.yaml
docker-compose down -v && docker-compose up -d
通過瀏覽器訪問 http://192.168.0.241/static/vendors/swagger/index.html
# 獲取鏡像
curl -X GET --header 'Accept: application/json' 'http://192.168.0.241/api/search?q=library'
#獲取鏡像倉庫的 tags,紅色框框處就是 tags
curl -X GET --header 'Accept: application/json' 'http://192.168.0.241/api/repositories/library%2Ftomcat/tags'
# 刪除鏡像倉庫的 tags
curl -X DELETE -H 'Accept: text/plain' -u admin:Harbor12345 "http://192.168.0.241/api/repositories/library/redis/tags/2018-10-29_17-39"
# 刪除鏡像的 tags 時,可以通過 curl 獲取返回值來判斷成功與否
curl -X DELETE -H 'Accept: text/plain' -u admin:Harbor12345 -o /dev/null -s -w %{http_code} "http://192.168.0.241/api/repositories/library/redis/tags/2018-10-29_17-39"
# HTTP Status Code 返回碼說明
200 Delete tag successfully.
400 Invalid repo_name.
401 Unauthorized.
403 Forbidden.
404 Repository or tag not found.
附上自動清理 harbor tags 的腳本,這里刪除多余的 tags,保留9個,可在下面腳本配置,打 tag 的時候可以按照日期命名,例如:2018-10-29_17-39 這可以方便用下面的腳本進行刪除操作
#!/bin/bash
URL="http://192.168.0.241"
USER="admin"
PASS="Harbor12345"
PRO="library"
HARBOR_PAHT="/iba/harbor"
# 軟刪除 harbor tags
del_tags()
{
echo "軟刪除 ${rp}/${t}"
curl -X DELETE -H 'Accept: text/plain' -u ${USER}:${PASS} "${URL}/api/repositories/${rp}/tags/${t}"
}
# 硬刪除 harbor tags
har_del_tags()
{
cd ${HARBOR_PAHT}
docker-compose -f docker-compose.yml -f docker-compose.clair.yml stop
docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.2-photon garbage-collect /etc/registry/config.yml
docker-compose -f docker-compose.yml -f docker-compose.clair.yml start
}
# 獲取 project id
PID=$(curl -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 -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 -s -X GET --header 'Accept: application/json' "${URL}/api/repositories/${rp}/tags"|grep \"name\"|awk -F '"' '{print $4}'|sort -r |awk 'NR > 9 {print $1}')
for t in ${TAGS}
do
echo ${t}
del_tags
done
echo "===================="
done
har_del_tags