https://blog.csdn.net/weixin_50902636/article/details/135317982
删除不掉镜像
docker image inspect --format=‘{{.RepoTags}} {{.Id}} {{.Parent}}’ $(docker image ls -q --filter since=5a64b7c87a1a)
自动清理镜像脚本
####自动清理脚本,若是harbor用的https,则将脚本中http改为https####
# yum install jq -y
jq:主要是用于shell与json结合,实现将数据输出为json,便于处理
# cat hub_image_clean.sh
#!/bin/bash
set -e
HARBOR_URL=192.168.0.58
HARBOR_PASSWD=Harbor12345
OLD_VERSION_NUM=4
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
for index in $(seq 1 ${num}); do
# tag=$(echo "${htmlinfo}" | jq ".[${index}]" | jq -r '.name')
#
echo "${htmlinfo}" | jq -r '.[].name'|sort -n >tag.txt
tag=`cat tag.txt |head -n $index |tail -n 1`
#
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(){
serverip=`ip addr|grep inet|grep 192.168|grep -v inet6|awk '{print $2}'|cut -d/ -f1`
if [[ "$serverip" != "${HARBOR_URL}" ]]; then
echo "harbor is not running in the machine!!!"
exit 1
fi
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://www.cnblogs.com/breezey/p/10615231.html