一、脚本
# cat harbor-image-listk-v2.sh
#!/bin/bash
Harbor_Address=192.168.110.30 #Harbor主机地址
Harbor_User=admin #登录Harbor的用户
Harbor_Passwd=Harbor12345 #登录Harbor的用户密码
Images_File=harbor-images-`date '+%Y-%m-%d'`.txt # 镜像清单文件
Tar_File=/tmp/Harbor-backup #镜像tar包存放路径
if [ -d $Tar_File ];thenrm -rf $Tar_Filemkdir $Tar_File/jiaoda -p
elsemkdir $Tar_File/jiaoda -p
fi
set -x
# 获取Harbor中所有的项目(Projects)
Project_List=$(curl -u admin:Harbor12345 -H "Content-Type: application/json" -X GET http://192.168.110.30/api/v2.0/projects -k | python -m json.tool | grep name | awk '/"name": /' | awk -F '"' '{print $4}')for Project in $Project_List;do# 循环获取项目下所有的镜像Image_Names=$(curl -u admin:Harbor12345 -H "Content-Type: application/json" -X GET http://192.168.110.30/api/v2.0/projects/$Project/repositories?page_size=100 -k | python -m json.tool | grep name | awk '/"name": /' | awk -F '"' '{print $4}')for Image in $Image_Names;doif [ $Image == jiaoda/rabbitmq ]thencontinueelif [ $Image == jiaoda/os-shell ]thencontinueelif [ $Image == jiaoda/nginx ]thencontinueelif [ $Image == jiaoda/rocketmq ]thencontinueelif [ $Image == jiaoda/python3.8 ]thencontinueelif [ $Image == jiaoda/python3.8-requests ]thencontinueelif [ $Image == jiaoda/centos7 ]thencontinueelif [ $Image == jiaoda/mqtt ]thencontinueelif [ $Image == jiaoda/jdk17 ]thencontinueelif [ $Image == jiaoda/admin-ui ]thencontinueelif [ $Image == jiaoda/test ]thencontinueelif [ $Image == jiaoda/jdk ]thencontinueelif [ $Image == jiaoda/vue ]thencontinueelse# 循环获取镜像的版本(tag)Image_Tags=$(curl -u admin:Harbor12345 -H "Content-Type: application/json" -X GET http://192.168.110.30/v2/$Image/tags/list?page_size=100 -k | awk -F '"]}' '{print $1}'| awk -F '"' '{print $NF}')# 格式化输出镜像信息echo "$Harbor_Address/$Image:$Image_Tags" >> images-`date '+%Y-%m-%d'`.txtdocker pull $Harbor_Address/$Image:$Image_Tagsdocker tag $Harbor_Address/$Image:$Image_Tags harbor.test.com/$Image:$Image_Tagsdocker rmi $Harbor_Address/$Image:$Image_Tagsdocker save -o $Tar_File/$Image$Image_Tags.tar harbor.test.com/$Image:$Image_Tagsdocker rmi harbor.test.com/$Image:$Image_Tagsfidone
done
二、效果
