Docker 镜像批量备份(导出)

脚本作用

1.批量导出Docker Images;
2.部分导出,通过指定Docker Images ID 到脚本“LIST”变量

运行实例

#导出全部的镜像;
 sh ExportImg.sh

 #导出部分镜像
 LIST=“ d235b 201c7a  201c7a”
 sh ExportImg.sh
注意:LIST赋值Docker Images ID ,多个镜像ID通过空格隔离;执行脚本是只会导出定义ID的镜像;

镜像还原(任选一种)

docke load --input xxx.tar
docker load < xx.tar
docker load -i xx.tar

脚本内容

LIST=""
TXT=/root/tmp.txt
BAKDIR=/usr/local/bak
LOGDIR=/usr/local/bak/log
LOGFILE=$LOGDIR/bak.`date +%Y%m%d`.log

[ ! -d $BAKDIR ] && mkdir -p $BAKDIR
[ ! -d $LOGDIR ] && mkdir -p $LOGDIR

if [ -n "$LIST" ]
then
        for list in $LIST
        do
                RES_TAG=`docker images |grep $list|awk ‘{a=$1":"$2;print a }‘`
                NUM=`docker images |grep $list |awk ‘{a=$1":"$2;print a }‘|awk -F"/" ‘{print NF-1}‘`
                if [ $NUM -eq 1 ]
                then
                        BAK_NAME=`docker images |grep $list|awk ‘{a=$1":"$2;print a }‘|awk -F"/" ‘{print $2}‘`
                        /usr/bin/docker save $RES_TAG -o $BAKDIR/$BAK_NAME.tar >> $LOGFILE 2>&1
                else
                        SNUM=$[$NUM + 1 ]
                        BAK_NAME=`docker images |grep $list|awk ‘{a=$1":"$2;print a }‘|cut -d ‘/‘ -f $SNUM-`
                        /usr/bin/docker save $RES_TAG -o $BAKDIR/$BAK_NAME.tar >> $LOGFILE 2>&1
                fi
        done
else
        REC=`docker images |awk ‘{print $1,$2,$3}‘|sed 1d >> $TXT`
        IDLIST=`cat $TXT|awk ‘{print $3}‘`
        for i in $IDLIST
        do
                RES_TAG=`docker images |grep $i|awk ‘{a=$1":"$2;print a }‘`
                NUM=`docker images |grep $i |awk ‘{a=$1":"$2;print a }‘|awk -F"/" ‘{print NF-1}‘`
                if [ $NUM -eq 1 ]
                then
                        BAK_NAME=`docker images |grep $i|awk ‘{a=$1":"$2;print a }‘|awk -F"/" ‘{print $2}‘`
                        /usr/bin/docker save $RES_TAG -o $BAKDIR/$BAK_NAME.tar >> $LOGFILE 2>&1

                else
                        SNUM=$[$NUM + 1 ]
                        BAK_NAME=`docker images |grep $i|awk ‘{a=$1":"$2;print a }‘|cut -d ‘/‘ -f $SNUM-`
                        /usr/bin/docker save $RES_TAG -o $BAKDIR/$BAK_NAME.tar >> $LOGFILE 2>&1
                fi
        done
        /usr/bin/rm -f $TXT
fi

if [ -s $LOGFILE ]
then
        echo -e "\033[31mERROR:Images Backup Failed!\033[0m"
        echo -e "\033[31mPlease View The Log Lile : $LOGFILE\033[0m"
else
        /usr/bin/rm -f $LOGFILE
fi


感谢大家的浏览!!!

原文地址:https://blog.51cto.com/scorpions/2414948

时间: 2024-10-09 18:50:04

Docker 镜像批量备份(导出)的相关文章

Docker镜像的导入导出

导入/导出命令介绍 导入/导出的功能主要用于Docker镜像的导入导出,用于迁移.备份.升级等场景,或者为隔离且没有私有镜像仓库环境添加docker镜像. 导入/导出的命令主要有下面几个:export.import.save.load,可以分为2组: save和load export和import 下面分别看看他们的用法和区别 save和load 命令用法 [email protected] -> ~/manifests$ docker save --help Usage: docker sav

docker镜像批量打包

docker镜像批量打包 批量打包镜像: # docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o k8s-master.tar 将机器上的所有镜像打包到haha.tar文件里面. 导入镜像: # docker load -i k8s-master.tar 然后docker images就可以看到拷贝过来的镜像了. 原文地址:h

Docker 镜像-管理-导入-导出

目录 Docker 镜像基本概念 Docker 镜像加速 Docker 镜像 常用命令 Docker 镜像的创建和导出导入 Docker 镜像基本概念 我们使用的容器都是基于镜像的,镜像是由多层组成的,容器是在镜像上面添加了一个读写层.镜像一般储存在 /var/lib/docker/image/. 多个容器是引用的同一个 镜像,容器不会更改镜像的内容,而是创建一个可写层,并将数据保存在 /var/lib/docker/containers 中. Docker 镜像加速 当我们在使用 Docker

Docker镜像批量导入

作用 主要目的用于批量镜像导入; 1.支持传参数导入 实例: sh import.sh "pause_3.1.tar etcd_3.3.10.tar" 注意:多个tar文件使用空格分隔; 2.支持脚本定义导入镜像名称 实例: vi import.sh STATE="ImgName1 ImgName2 ImgName3 ...." sh import.s 3.支持指定目录导入镜像 实例: vi import.sh TARDIR="/usr/local/bak

docker镜像容器导入导出

记录一下,省的以后自己老忘. ubuntu-14.04-x86_64.tar.gz是下载的模板文件,导入模板文件示例如下 [email protected]:~# ll ubuntu-14.04-x86_64.tar.gz  -rw-r--r-- 1 root root 154056446 May 17 10:04 ubuntu-14.04-x86_64.tar.gz [email protected]:~# cat ubuntu-14.04-x86_64.tar.gz | docker imp

docker 镜像导入和导出

使用 docker commit 即可把这个容器变为一个镜像 docker commit 8d93082a9ce1 ubuntu:myubuntu 这时候 docker 容器会被创建为一个新的 Ubuntu 镜像,版本名称为 myubuntu .以后我们可以随时使用这个镜像来创建容器了,新的容器将自动包以前对容器的操作.(以前安装的软件,配置文件的修改等等) 如果我们要在另外一台机器上使用这个镜像,可以将一个镜像导出: docker save -o myubuntu.tar.gz ubuntu:

docker镜像构建以及导出save、导入load

前导:通过commit构建本地镜像,save保存镜像,load加载镜像1.通过commit构建镜像[[email protected] ~]# docker commit -p web1-p:表示在构建镜像的过程中,容器被暂停,web1是被构建的容器对象,及将运行名称为web1的容器打包为一个镜像2.查看构建的镜像,此时构建的镜像没有仓库名和标签3.为镜像添加仓库名和标签,并重新查看镜像4.将该镜像打包保存至本地linux根目录下[[email protected] ~]# docker sav

daocke镜像批量导出脚本

脚本作用 1.批量导出Docker Images;2.部分导出,通过指定Docker Images ID 到脚本“LIST”变量:3.支持相同ID,不同REPOSITORY名称备份: 例如: docker images kry1702/coredns 1.3.1 eb516548c180 5 months ago 40.3MB k8s.gcr.io/coredns 1.3.1 eb516548c180 5 months ago 40.3MB 注意:备份文件名称格式为:kry1702_coredn

Docker 镜像的导入和导出

镜像的导入和导出 export 和improt [[email protected]#localhost docker]# docker run -ti ubuntu:update /bin/bash [email protected]d:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp update.txt usr var [[email protected]#localhost