当前位置: 首页 > news >正文

备份还原 本地所有的Docker 镜像并且在另一台机器上还原

备份命令 并且显示进度 backup_docker_images.sh

sudo yum install jq
chmod +x backup_docker_images.sh
sudo ./backup_docker_images.sh
#!/bin/bash# 指定备份目录
backup_dir="/app/dockerImageBackup/Images"# 创建备份目录,如果不存在的话
mkdir -p $backup_dir# 获取所有镜像的 ID
image_ids=$(docker images -q)# 计算镜像的总数
total_images=$(echo $image_ids | wc -w)# 初始化进度计数器
current_image=1# 遍历每个镜像
for image_id in $image_ids
do# 获取镜像的所有信息image_info=$(docker inspect $image_id)# 获取镜像的名字和标签image_names=$(echo $image_info | jq -r '.[0].RepoTags | join(",")')# 如果镜像没有名字或标签,尝试从 RepoDigests 获取if [ "$image_names" == "null" ]; thenimage_names=$(echo $image_info | jq -r '.[0].RepoDigests[0]' | cut -d '@' -f1)fi# 使用 ID 作为文件名image_file="$image_id.tar"# 打印开始保存的信息echo "Saving image $current_image of $total_images: $image_file"# 保存镜像到文件docker save $image_id -o "$backup_dir/$image_file"# 保存镜像信息到文件echo $image_info > "$backup_dir/$image_id.json"# 打印完成保存的信息echo "Saved image $current_image of $total_images: $image_file"# 更新进度计数器current_image=$((current_image + 1))
done

还原所有的镜像

tar -czf /path/to/app.tar.gz /app
tar -xzf app.tar.gz -C /app -p


 

chmod +x load_docker_images.sh
sudo ./load_docker_images.sh
#!/bin/bash# 指定备份目录
backup_dir="/app/dockerImageBackup/Images"# 遍历备份目录下的所有 .tar 文件
for tar_file in $backup_dir/*.tar
do# 获取镜像的 IDimage_id=$(basename $tar_file .tar)# 打印开始加载的信息echo "Loading image: $image_id"# 加载镜像docker load -i $tar_file# 打印完成加载的信息echo "Loaded image: $image_id"# 获取镜像的详细信息image_info=$(cat "$backup_dir/$image_id.json")# 获取镜像的名字和标签image_names=$(echo $image_info | jq -r '.[0].RepoTags | join(",")')# 如果镜像没有名字或标签,尝试从 RepoDigests 获取if [ -z "$image_names" ]; thenecho "Image names is null, trying to get from RepoDigests..."image_names=$(echo $image_info | jq -r '.[0].RepoDigests[0]' | cut -d '@' -f1)echo "Image names from RepoDigests: $image_names"fi# 使用 docker tag 为镜像添加名字和标签for image_name in $(echo $image_names | tr "," "\n")dodocker tag $image_id $image_nameecho "Tagged image: $image_id as $image_name"done
done
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • bios中启动模式uefi是什么意思_uefi相关知识史上最全介绍
  • 超声波测距模块HC-SR04(基于STM32F103C8T6HAL库)
  • [米联客-XILINX-H3_CZ08_7100] FPGA程序设计基础实验连载-39 HDMI视频输入测试
  • 我司使用了两年的高效日志打印工具,非常牛逼!
  • 【C++】优化函数对象:提升性能和内存效率
  • 第十六篇:走入计算机网络的传输层--传输层概述
  • 【Linux 运维知识】Linux 编译后的内核镜像大小
  • elementplus表单位置居中
  • SSH免秘钥问题
  • mac 安装brew并配置国内源
  • Minimax-秋招正式批-面经(SQL相关)
  • EasyExcel实现复杂Excel的导入
  • linux系统中,计算两个文件的相对路径
  • springboot中的请求过滤filter与拦截interceptor分析
  • 如何从硬盘恢复已删除/丢失的文件?硬盘恢复已删除的文件技巧
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【Linux系统编程】快速查找errno错误码信息
  • CSS 三角实现
  • Java的Interrupt与线程中断
  • MobX
  • Vue学习第二天
  • 初识MongoDB分片
  • 构造函数(constructor)与原型链(prototype)关系
  • 模型微调
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 用Canvas画一棵二叉树
  • Spring Batch JSON 支持
  • 阿里云ACE认证之理解CDN技术
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #if等命令的学习
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • ()、[]、{}、(())、[[]]命令替换
  • (1)bark-ml
  • (Oracle)SQL优化技巧(一):分页查询
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (solr系列:一)使用tomcat部署solr服务
  • (第27天)Oracle 数据泵转换分区表
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (四)图像的%2线性拉伸
  • (一)UDP基本编程步骤
  • (转)ORM
  • .net反编译工具
  • .net经典笔试题
  • .net开发日常笔记(持续更新)
  • .Net面试题4
  • .Net小白的大学四年,内含面经
  • .vimrc 配置项
  • @Pointcut 使用
  • @RequestBody与@RequestParam:Spring MVC中的参数接收差异解析
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [202209]mysql8.0 双主集群搭建 亲测可用