备份还原 本地所有的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

相关文章

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

C#实现获得某个枚举的所有名称

《C#实现获得某个枚举的所有名称》这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... C#中获得某个枚举的所有名称using System;using System.Collections.Generic;usi

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

springboot 加载本地jar到maven的实现方法

《springboot加载本地jar到maven的实现方法》如何在SpringBoot项目中加载本地jar到Maven本地仓库,使用Maven的install-file目标来实现,本文结合实例代码给... 在Spring Boothttp://www.chinasem.cn项目中,如果你想要加载一个本地的ja

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

使用JavaScript操作本地存储

《使用JavaScript操作本地存储》这篇文章主要为大家详细介绍了JavaScript中操作本地存储的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录本地存储:localStorage 和 sessionStorage基本使用方法1. localStorage

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

Nacos客户端本地缓存和故障转移方式

《Nacos客户端本地缓存和故障转移方式》Nacos客户端在从Server获得服务时,若出现故障,会通过ServiceInfoHolder和FailoverReactor进行故障转移,ServiceI... 目录1. ServiceInfoHolder本地缓存目录2. FailoverReactorinit

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p