1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| #!/usr/bin/env bash
# # 脚本名称: push_to_harbor.sh # 脚本功能: 上传images到harbor #
harborIp=192.168.137.11:81 project=system
echo '############################################################################' echo '# docker版本 ' echo '############################################################################' docker --version if [ $? -ne 0 ];then echo "请先安装docker!" exit fi
echo '############################################################################' echo '# images列表及版本号: ' echo '############################################################################' docker images |awk 'NR >1 {printf("%-70s%-15s%s\n",$1,$2,$3)}'
echo '############################################################################' echo "# 登录$harborIp " echo '############################################################################' docker login $harborIp if [ $? -ne 0 ];then echo "登录失败,请检查后重试!" exit fi
docImages=($(docker images |awk 'NR >1 {printf($1":"$2" ")}')) imageName=($(docker images |awk 'NR >1 {print($1)}'|awk -F "/" '{print $NF}')) imageVersion=($(docker images |awk 'NR >1 {print($2)}')) Number=() t=1
if [ ${#docImages[@]} -ne ${#imageName[@]} -o ${#imageVersion[@]} -ne ${#imageName[@]} ];then echo "获取images镜像出错,请检查!" exit 1 fi
echo '############################################################################' echo '# 上传harbor的images镜像列表 ' echo '############################################################################' for ((i=0;i<${#docImages[@]};i++));do echo "$(expr ${i} + 1) ${docImages[i]}" done echo "$(expr ${#docImages[@]} + 1) 退出"
while ((t<5));do read -p "请选择要tag的images(填写序号):" -t 500 -a Number if [ -z ${#Number[@]} ];then read -p "请选择要tag的images(填写序号):" -t 500 -a Number else for ((k=0;k<${#Number[@]};k++));do if [ ${Number[$k]} -eq $(expr ${#docImages[@]} + 1) ];then echo "退出" break exit 1 fi done break fi done
echo '############################################################################' echo '# 上传images镜像' echo '############################################################################' for ((a=0;a<${#Number[@]};a++));do docker tag ${docImages[$a]} ${harborIp}/${project}/${imageName[$a]}:${imageVersion[$a]} docker push ${harborIp}/${project}/${imageName[$a]}:${imageVersion[$a]} docker rmi -f ${harborIp}/${project}/${imageName[$a]}:${imageVersion[$a]} >/dev/null done
echo '############################################################################' echo '# The End.' echo '###########################################################################'
|