此脚本可以修改单个镜像,pull ,tag,push 功能,也可以全量修改本地镜像和拉取全量镜像并修改等。具体执行该脚本并查看说明。
1 #!/bin/bash 2 #set -x 3 ps3="选择要执行的命令按数字: 4 1)拉取单个新的镜像并tag后推送至新镜像仓库。 5 2)拉取全部镜像需要在本地创建一个*.pi结尾的文件并把需要的镜像按列表黏贴进去即可(注意需要放到和脚本同级目录下)。 6 3)更改本地已有镜像tag后并推送至新镜像仓库。 7 (退出请按 4)exit 或 Ctrl+c): " 8 select to_chose in pull all local exit;do 9 10 11 case $to_chose in 12 pull) 13 while true;do 14 read -ep "输入镜像全路径包括tag,例如: dockerhub.jd.com/test/abc:v0.0.1(回到上一级输入"exit"):" to_whole 15 if [ $to_whole == exit ];then 16 break 17 fi 18 read -ep "输入目标镜像部分路径,例如:harbor.jd.sunju/test/(末尾必须加'/'斜杠)(回到上一级输入"exit"):" to_part 19 if [ $to_part == exit ];then 20 break 21 fi 22 echo "------------------------------------------------------------------------->" 23 echo -e "\033[31m执行命令pull : docker pull $to_whole \033[0m" 24 docker pull $to_whole 25 echo "------------------------------------------------------------------------->" 26 echo -e "\033[31m执行命令tag : docker tag $to_whole $to_part${to_whole##*/} \033[0m" 27 docker tag $to_whole $to_part${to_whole##*/} 28 echo "------------------------------------------------------------------------->" 29 echo -e "\033[31m执行命令push : docker push $to_part${to_whole##*/} \033[0m" 30 docker push $to_part${to_whole##*/} 31 32 done 33 ;; 34 all) 35 hosts=`sed -n '/^[^#]/p' *.pi` 36 read -ep "输入目标镜像部分路径,例如:harbor.jd.sunju/test/(末尾必须加'/'斜杠)(回到上一级输入"exit"):" to_all 37 for host in $hosts;do 38 echo "------------------------------------------------------------------------->" 39 echo -e "\033[31m执行命令pull : docker pull $host \033[0m" 40 docker pull $host 41 echo "------------------------------------------------------------------------->" 42 echo -e "\033[31m执行命令tag :docker tag $host $to_all${host##*/} \033[0m" 43 docker tag $host $to_all${host##*/} 44 echo "------------------------------------------------------------------------->" 45 echo -e "\033[31m执行命令push : docker push $to_all${host##*/} \033[0m" 46 docker push $to_all${host##*/} 47 done 48 ;; 49 local) 50 while true;do 51 read -ep "输入原镜像全路径例如:dockerhub.jd.com/test/:(末尾必须加'/'斜杠)(回到上一级输入"exit"):" to_origin 52 if [ $to_origin == exit ];then 53 break 54 fi 55 read -ep "输入目标镜像全路径例如:harbor.jd.sunju/test/(末尾必须加'/'斜杠)(回到上一级输入"exit"):" to_target 56 if [ $to_target == exit ];then 57 break 58 fi 59 origin=`docker images | grep "$to_origin"| awk '{print$1,$2}' | tr -s ' ' ':'` 60 tag_origin=`docker images | grep "$to_origin"| awk '{print$1,$2}' | tr -s ' ' ':' |awk -F '\/' '{print$NF}'` 61 target=$to_target 62 for n in ${tag_origin[@]} 63 do 64 if [ "$n" == "$n" ];then 65 echo "------------------------------------------------------------------------->" 66 echo -e "\033[31m执行命令tag : docker tag $to_origin$n $target$n \033[0m" 67 docker tag $to_origin$n $target$n 68 echo "------------------------------------------------------------------------->" 69 echo -e "\033[31m执行命令push : docker push $target$n \033[0m" 70 docker push $target$n 71 else 72 continue 73 fi 74 done 75 done 76 ;; 77 exit) 78 break 79 ;; 80 *) 81 echo -e "\033[35m输入的不是规定的参数,取消执行命令! 82 (请输入数字1或2操作指令pull/local,退出请输入数字:" 3/exit ")\033[0m" 83 84 echo "" 85 echo "=====================================================>" 86 esac 87 done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。