背景:
我们经常会遇到使用docker pull 下载公有镜像,比如dockerhub的image ,然后重新tag 推送到自建仓库,比如harbor ,这是一个高频动作,所以可以使用脚本来实现
脚本:
#! /bin/bash
# The ami of this script is changing pubilc image to privte harbor's
#example :kubesphere/ks-apiserver:advanced-2.0.2
set -ex
input_info=$1
image_name=`echo $input_info | awk -F ':' '{ print $1 }' | awk -F '/' '{ print $NF }'`
image_tag=`echo $input_info | awk -F ':' '{ print $2 }'`
harbor_registry='192.168.200.50/project_name'
function docker_pull(){
docker pull $input_info
}
function docker_tag(){
docker tag $input_info ${harbor_registry}/${image_name}:${image_tag}
}
function docker_push(){
docker push ${harbor_registry}/${image_name}:${image_tag}
}
function docker_rmi(){
#delete the pubilc image
docker rmi $input_info
}
docker_pull
docker_tag
docker_push
docker_rmi
if [[ $? -eq 0 ]] ;then echo "changing pubilc image to privte harbor's is done!"; fi
用法:
1.修改harbor_registry 为自己的registry
2.sh auto_image_push.sh 镜像名称即可
例如 docker pull kubesphere/ks-apiserver:advanced-2.0.2