批量修改docker镜像tag脚本

功能截图:

测试环境:centos7

一.注意事项

1.使用批量修改镜像tag功能,将镜像最顶层修改成需要推送的地址

如(根据自己实际的地址进行修改):

个人私人仓库推送:

docker/elasticsearch:7.1.1需要改成dockerlocal.cn/docker/elasticsearch:7.1.1

阿里云私人仓库推送:

docker/elasticsearch:7.1.1需改成registry.cn-hangzhou.aliyuncs.com/docker/elasticsearch:7.1.1

[root@master shell]# ./temp.sh
请选择你的操作:
1) 批量修改镜像tag         3) 退出
2) 批量push镜像至远程仓库
#? 1
输入需要修改的tag:
registry.cn-hangzhou.aliyuncs.com/ydidcdo/
输入修改后的tag:
docker/
Untagged: registry.cn-hangzhou.aliyuncs.com/ydidcdo/flannel-cni-plugin:v1.2.0
Untagged: registry.cn-hangzhou.aliyuncs.com/ydidcdo/flannel-cni-plugin@sha256:2180bb74f60bea56da2e9be2004271baa6dccc0960b7aeaf43a97fc4de9b1ae0
修改成功 docker/flannel-cni-plugin:v1.2.0
Untagged: registry.cn-hangzhou.aliyuncs.com/ydidcdo/busybox:v1.0
Untagged: registry.cn-hangzhou.aliyuncs.com/ydidcdo/busybox@sha256:28e01ab32c9dbcbaae96cf0d5b472f22e231d9e603811857b295e61197e40a9b
修改成功 docker/busybox:v1.0
Untagged: registry.cn-hangzhou.aliyuncs.com/ydidcdo/flannel:v0.14.0-amd64
Untagged: registry.cn-hangzhou.aliyuncs.com/ydidcdo/flannel@sha256:635d42b8cc6e9cb1dee3da4d5fe8bbf6a7f883c9951b660b725b0ed2c03e6bde
修改成功 docker/flannel:v0.14.0-amd64

2.输入推送地址批量推送镜像

 注:

1).本脚本不会做任何校验,只提取镜像顶层为网络地址(推送地址)的进行批量推送.推送前前务必修改好镜像tag

2).比如registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816 推送地址仅需要输入registry-vpc.cn-hangzhou.aliyuncs.com即可

[root@master shell]# ./temp.sh
请选择你的操作:
1) 批量修改镜像tag         3) 退出
2) 批量push镜像至远程仓库
#? 2
请输入推送地址:
registry.cn-hangzhou.aliyuncs.com
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/ydidcdo/flannel-cni-plugin]
9332f71f5f3d: Layer already exists
7df5bd7bd262: Layer already exists
v1.2.0: digest: sha256:2180bb74f60bea56da2e9be2004271baa6dccc0960b7aeaf43a97fc4de9b1ae0 size: 739
提交成功:registry.cn-hangzhou.aliyuncs.com/ydidcdo/flannel-cni-plugin:v1.2.0
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/ydidcdo/busybox]
d51af96cf93e: Layer already exists
v1.0: digest: sha256:28e01ab32c9dbcbaae96cf0d5b472f22e231d9e603811857b295e61197e40a9b size: 527
提交成功:registry.cn-hangzhou.aliyuncs.com/ydidcdo/busybox:v1.0
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/ydidcdo/flannel]
814fbd599e1f: Layer already exists
8a984b390686: Layer already exists
b613d890216c: Layer already exists
eb738177d102: Layer already exists
2e16188127c8: Layer already exists
815dff9e0b57: Layer already exists
777b2c648970: Layer already exists
v0.14.0-amd64: digest: sha256:635d42b8cc6e9cb1dee3da4d5fe8bbf6a7f883c9951b660b725b0ed2c03e6bde size: 1785
提交成功:registry.cn-hangzhou.aliyuncs.com/ydidcdo/flannel:v0.14.0-amd64

二.使用教程

1.创建sh脚本

vi shell.sh

2.编辑shell脚本

#!/bin/bash
echo "请选择你的操作:"

select opt in "批量修改镜像tag" "批量push镜像至远程仓库" "退出" ; do
  case $opt in
    "批量修改镜像tag")
      echo "输入需要修改的tag:"
      read -r oldTag
      oldImages=$(docker images --format "{{.Repository}}:{{.Tag}}" | grep "^${oldTag}")
      if [ -z "$oldImages" ]; then
          echo "未找到镜像,请正确输入";
          exit;
      fi
        echo "输入修改后的tag:"
        read -r newTag
        for image in $oldImages; do
            new_image_tag="$newTag${image##*$oldTag}"
            docker tag "$image" "$new_image_tag"
            docker rmi "$image"
          if [ $? -ne 0 ]; then
             echo "修改失败 $image"
            else
             echo "修改成功 $new_image_tag"
          fi
        done
        exit;

      ;;
    "批量push镜像至远程仓库")
      echo "请输入推送地址:"
      read -r push_address
      if [[ $push_address =~ ^[a-zA-Z0-9][a-zA-Z0-9-]*(\.[a-zA-Z0-9][a-zA-Z0-9-]*)*$ ]]; then
        imageName=$(docker images --format "{{.Repository}}:{{.Tag}}" | grep "^${push_address}")
        if [ "$imageName" ]; then
          for i in $imageName; do
              docker push "$i"
              if [ $? -ne 0 ]; then
                echo "提交失败:$i"
              else
                echo "提交成功:$i"
              fi
          done
        else
          echo "未找到镜像"
          exit;
        fi
        else
          echo "请正确输入域名"
          exit;
      fi
      exit;
      ;;
    "退出")
      exit;
      ;;
    *) echo "无效的选项 $REPLY";;
  esac
done

3.为 shell 添加可执行权限并执行

chmod +x shell.sh
./shell.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值