镜像拉取并且重命名推送到第三方镜像仓库

这是一个Bash脚本,用于从不同源拉取Docker镜像,为它们打上指定的目标标签,并推送到指定的仓库。脚本首先定义了目标用户和仓库,然后读取images文件中的每一行,处理每一条镜像信息,包括检查源镜像和版本,创建目标镜像标签并进行推送。示例中包含了多个来自不同供应商的Docker镜像版本。
#!/bin/bash
 
set -e

dst_user=tanjunchen
dst_repo=docker.io

pull_tag_push_image(){
    while read image; do
        if [ -z "${image}" ]
        then
        continue
        fi
        echo "docker pull ${image}"
    
        docker pull ${image}
        echo "docker pull ${image} success!!!"
        
        array=(`echo ${image} | tr ':' ' '` )
        src_image=${array[0]}
        src_version=${array[1]}
        if [ ! ${src_image} ]; then
            echo "src_image is null, stop tag and push"
            continue
        fi
        if [ ! ${src_version} ]; then
            echo "src_version is null, set default value latest"
            src_version=latest
        fi
        echo "docker src images info ${src_image} ${src_version}"
        
        image_array=(`echo ${src_image} | tr '/' ' '` )
        image_name=${image_array[-1]}
        if [ ! ${image_name} ]; then
            echo "image_name is null, stop tag and push"
            continue
        fi
        dst_image=${dst_repo}/${dst_user}/${image_name}:${src_version}

        echo "docker destination images info ${dst_image}"
        
        docker tag ${src_image}:${src_version} ${dst_image}

        docker push ${dst_image}
    
    done < images
}

pull_tag_push_image

其中 done < images 中的 images 内容是文本,示例如下所示:

gcr.io/spiffe-io/spire-agent:1.2.0

ghcr.io/spiffe/spiffe-csi-driver:0.1.0

gcr.io/spiffe-io/wait-for-it

k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.4.0

gcr.io/spiffe-io/spire-server:1.2.0

gcr.io/spiffe-io/k8s-workload-registrar:1.2.0

Docker本身没有直接的重命名命令,但可以通过标签(tag)操作来实现镜像重命名的效果。以下是一个示例脚本,展示了镜像重命名推送第三方镜像仓库的过程: ```bash #!/bin/bash set -e dst_user=tanjunchen dst_repo=docker.io pull_tag_push_image() { while read image; do if [ -z "${image}" ]; then continue fi echo "docker pull ${image}" docker pull ${image} echo "docker pull ${image} success!!!" array=(`echo ${image} | tr ':' ' '`) src_image=${array[0]} src_version=${array[1]} if [ ! ${src_image} ]; then echo "src_image is null, stop tag and push" continue fi if [ ! ${src_version} ]; then echo "src_version is null, set default value latest" src_version=latest fi echo "docker src images info ${src_image} ${src_version}" image_array=(`echo ${src_image} | tr '/' ' '`) image_name=${image_array[-1]} if [ ! ${image_name} ]; then echo "image_name is null, stop tag and push" continue fi dst_image=${dst_repo}/${dst_user}/${image_name}:${src_version} echo "docker destination images info ${dst_image}" docker tag ${src_image}:${src_version} ${dst_image} docker push ${dst_image} done < images } pull_tag_push_image ``` 在这个脚本中,首先从 `images` 文件中读镜像列表,然后依次每个镜像。接着,将镜像源信息拆分为镜像名称和版本号,若版本号为空则设置为 `latest`。之后生成目标镜像的名称,并使用 `docker tag` 命令为源镜像打上新的标签,相当于对镜像进行了重命名,最后使用 `docker push` 命令将重命名后的镜像推送到指定的第三方镜像仓库 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远方的飞猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值