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

2024-09-06 20:36

本文主要是介绍备份还原 本地所有的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

这篇关于备份还原 本地所有的Docker 镜像并且在另一台机器上还原的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143053

相关文章

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

Java实现本地缓存的四种方法实现与对比

《Java实现本地缓存的四种方法实现与对比》本地缓存的优点就是速度非常快,没有网络消耗,本地缓存比如caffine,guavacache这些都是比较常用的,下面我们来看看这四种缓存的具体实现吧... 目录1、HashMap2、Guava Cache3、Caffeine4、Encache本地缓存比如 caff

Conda国内镜像源及配置过程

《Conda国内镜像源及配置过程》文章介绍Conda镜像源使用方法,涵盖临时指定单个/多个源、永久配置及恢复默认设置,同时说明main(官方稳定)、free(逐渐弃用)、conda-forge(社区更... 目录一、Conda国内镜像源二、Conda临时使用镜像源指定单个源临时指定多个源创建环境时临时指定源

MySQL容灾备份的实现方案

《MySQL容灾备份的实现方案》进行MySQL的容灾备份是确保数据安全和业务连续性的关键步骤,容灾备份可以分为本地备份和远程备份,主要包括逻辑备份和物理备份两种方式,下面就来具体介绍一下... 目录一、逻辑备份1. 使用mysqldump进行逻辑备份1.1 全库备份1.2 单库备份1.3 单表备份2. 恢复

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结