마구잡

Harbor Image Size 체크 스크립트 본문

Kubernetes

Harbor Image Size 체크 스크립트

MAGUJOB 2024. 1. 30. 17:03
반응형

오랜만에 글을 쓴다.

지금 만드는 내부 환경이 혼자 만들기엔 사이즈가 좀 커서 활동이 뜸해진다.

 

언젠가는 블로그에 정리하는 날이 오겠지..

만든 이유

내 지식 부족인지 구글링의 한계인지 Image size를 보려면 꼭 UI의 TAG까지 들어가 따로 보는게 여간 귀찮았다.

완변하진 않지만 이미지가 많다면 아래 스크립트로 대략적인 Size 체크 정도는 가능하다.

 

주의할점

기본적으로 container 이미지는 레이어 형식이기에 태그마다 온전한 용량을 차지하지 않는다.

Tag1.0: 100Mb + Tag 2.0: 101Mb = 201이 아니란 소리 

 

환경

Docker-compose 구성

Harbor API V1.0 ( 2.0도 될거긴 할거다 아마..)

jq 쿼리를 위한 서버에 jq 커맨드 보유

 

스크립트

#!/bin/bash

# API 호출 및 결과에서 project_id 추출하여 배열에 저장
project_ids=($(curl -s -k -u "하버계정:하버패스워드" -X GET --header 'Accept: application/json' -L '하버주소/api/projects' | jq -r '.[] | select(.deleted == false) | .project_id'))

# 결과 배열 초기화
repository_names=()

# 각 project_id에 대해 API 호출 및 결과에서 .name을 추출하여 배열에 추가
for project_id in "${project_ids[@]}"; do
    api_response=$(curl -s -k -u "하버계정:하버패스워드" -X GET --header 'Accept: application/json' -L "하버주소/api/repositories?project_id=$project_id" | jq -r '.[] | .name')
    repository_names+=($api_response)
done

# 순차적으로 API 호출 및 결과 출력
for name in "${repository_names[@]}"; do
    echo $name
    api_result=$(curl -s -k -u "하버계정:하버패스워드" -X GET "https://하버주소/api/repositories/$name/tags" | jq -r -c '.[] | {name, size}')
    echo "$api_result"
done

 

출력 값

docker.io/calico/cni
{"name":"v3.17.6","size":44055724}
{"name":"v3.20.4","size":48387780}
..중략
docker.io/calico/node
{"name":"v3.17.6","size":52025794}
{"name":"v3.20.4","size":57801199}

 

docker.io/calico/cni

프로젝트/레포지토리/이미지

 

{"name":"v3.17.6","size":52025794}

태그번호/ 사이즈

 

이러면 대충 Size 나오고 정리할때 조금 편하게 쓸 수 있다.

 

다들 맛있게 쓰시길 바랍니다.

 

반응형