功能截图:
测试环境: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