【转】harbor删除无用镜像
1、Harbor 搜索镜像及查看 tag
1、如果想要通过 API 获取 Harbor 上面的镜像及 tag 可以使用下面整理的脚本:
cacat get_images.sh
#!/bin/bash
USER="admin"
PASS="Harbor12345"
HURL="http://192.168.0.241"
rtoken=$(curl -k -s -u ${USER}:${PASS} ${HURL}/service/token?account=${USER}\&service=harbor-registry\&scope=registry:catalog:*|grep "token" |awk -F '"' '{print $4}')
#echo $rtoken
rlist=$(curl -k -s -H "authorization: bearer $rtoken " ${HURL}/v2/_catalog|awk -F '[' '{print $2}'|awk -F ']' '{print $1}'|sed 's/"//g')
echo $rlist|sed 's/,/\n/g'
# 解析一下变量:
USER="admin" Harbor 的用户名
PASS="Harbor12345" Harbor 的密码
HURL="http://192.168.0.241" Harbor 的地址
运行结果为:
2、获取到 images 后,可以进一步查看镜像的 tag:
cacat get_tag.sh #!/bin/bash USER="admin" PASS="Harbor12345" HURL="http://192.168.0.241" MTAG=$1 ttoken=$(curl -iksL -X GET -u $USER:$PASS $HURL/service/token?account=${USER}\&service=harbor-registry\&scope=repository:${MTAG}:pull|grep "token" |awk -F '"' '{print $4}') #echo $ttoken tlist=$(curl -ksL -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $ttoken" ${HURL}/v2/${MTAG}/tags/list|awk -F '[' '{print $2}'|awk -F ']' '{print $1}'|sed 's/"//g') echo $tlist|sed 's/,/\n/g' # 解析一下变量: USER="admin" Harbor 的用户名 PASS="Harbor12345" Harbor 的密码 HURL="http://192.168.0.241" Harbor 的地址 MTAG=$1 需传入一个镜像名字,上一脚本输出的结果
运行结果为:
2、harbor上删除镜像不释放空间问题
在HarborUI界面删除镜像,但磁盘空间并未释放,只是镜像文件的映射关系,还需要通过GC来删除:
2.1 停止harbor:
docker-compose stop
2.2 带有–dry-run选项,打印即将被除的镜像文件,但不删除
vmware/registry:2.6.2-photon为在harbor上可以pull下来的镜像
docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.2-photon garbage-collect --dry-run /etc/registry/config.yml
2.3 不带–dry-run选项,直接执行删除:
docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.2-photon garbage-collect /etc/registry/config.yml
2.4 启动Harbor:
docker-compose start