#脚本-上传images到harbor

上传images到harbor

#!/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 '###########################################################################'

留下评论