在自己电脑实验完成,希望将整个环境在开发环境还原,而且是内网环境,所以需要将搭建gitlab过程中的所有的镜像都打包。在内网还原
目前使用gitlab+gitlab-runner,其中container registry 使用gitlab自带的,所以不使用harbor,节省空间。
镜像本地备份
#!/bin/bash
IMAGES_LIST=($(docker images | sed '1d' | awk '{print $1}'))
IMAGES_NM_LIST=($(docker images | sed '1d' | awk '{print $1"-"$2}'| awk -F/ '{print $NF}'))
IMAGES_NUM=${#IMAGES_LIST[*]}
for((i=0;i<$IMAGES_NUM;i++))
do
docker save "${IMAGES_LIST[$i]}" -o "${IMAGES_NM_LIST[$i]}".tar.gz
done
主要是通过 sed 和 awk 工具,for 循环 使用 docker save 将image 保存到tar中
还原到本地
cd $DIR/images_file
for image_name in $(ls ./)
do
docker load < ${image_name}
done
在整个压缩包images_file 中 循环使用 docker load 还原到本地
批量上传 自由 container registry
#!/bin/bash
readonly new_repo=192.168.247.191:5005/test
for image in $(docker images --format '{{.Repository}}:{{.Tag}}'); do
name=${image##*/}
new_img=${new_repo}/${name}
echo "Processing ${image} -> ${new_img}"
docker tag ${image} ${new_img}
docker push ${new_img}
done
注意格式化输出 docker images --format '{{.Repository}}:{{.Tag}}'