docker批量导入导出镜像

关于docker images批量备份其实是很简单的脚本,网上写的不少,有的写的比较复杂一点,自己从新写了一个。如有不对的地方,欢迎指正。

导出镜像

脚本如下:dockerImagesBackup.sh【批量导出docker镜像】

#!/bin/sh
# Date:
# Author:
# Desc:
#    Batch backup docker local images.

# environment
_BAKDIR=/root/pkg/bak
_LOGDIR=/root/pkg/bak/logs
_LOGFILE=${_LOGDIR}/imagebackup.$(date +%s).lst
_LOGSNUM=30

# Determine whether the file directory exists
fileexist(){
    [ ! -d ${_BAKDIR} ] && mkdir -p ${_BAKDIR}
    [ ! -d ${_LOGDIR} ] && mkdir -p ${_LOGDIR}
}
 
imagebackup(){
    _IMAGESLIST=$(docker images | awk 'NR>1{print $1":"$2}')
    for imageslist in ${_IMAGESLIST}; do
        # M:2021.12.31 sed -e 有多个"/"导致只替换了一个
        _imagesfile=$(echo $imageslist | sed -e 's#/#_#g' -e 's#:#_#g')
        /usr/bin/docker save ${imageslist} -o ${_BAKDIR}/${_imagesfile}.tar
        echo "**$imageslist**.The backup is complete.Backup Time:$(date +%Y-%m-%d)" >> ${_LOGFILE} 2>&1            
    done
}
 
# main
main(){
    fileexist
    # Empty the directory before backing up.
    # rm -rf ${_BAKDIR}/
    imagebackup
    # Delete the previous 30 days log
    find ${_LOGFILE} -mtime +${_LOGSNUM} -exec rm -rf {} \;
}
main

导入镜像

脚本如下:dockerImagesLoad.sh【批量导入docker镜像】

#!/bin/bash
# Date:
# Author:
# Desc: 

_path=$(ls ~/pkg/bak)
_imagepath=~/pkg/bak
for image in ${_path[@]}; do
  docker load -i ${_imagepath}/$image
done
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值